Reputation: 57
I have no idea how to get last value on input text. I already get the first value, when input type is empty did not get value. Here's my code:
HTML
<input type="text" name="date[]" class="date" id="date" value="6/17"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/18"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/18"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/19"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/19"><br/>
<input type="text" name="date[]" class="date" id="date" value=""><br/>
<input type="text" name="date[]" class="date" id="date" value=""><br/>
JS/jQuery
$(document).ready(function(){
var $set = $('.date');
var len = $set.length;
$set.each(function(index, element) {
if (index === 0) {
alert (this.value);
}
});
});
Upvotes: 0
Views: 5074
Reputation: 56433
I have no idea how to get last value on input text. I already get the first value, when input type is empty did not get value.
this should work.
var result = $("input[value!='']");
console.log(result.first().val());
console.log(result.last().val());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="date[]" class="date" id="date" value="6/17"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/18"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/18"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/19"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/19"><br/>
<input type="text" name="date[]" class="date" id="date" value=""><br/>
<input type="text" name="date[]" class="date" id="date" value=""><br/>
Also, just as a side tip, don't use multiple id
attributes that have the same value because that's invalid HTML. Rather, if you want to access multiple elements use the class attribute which you've already done.
Upvotes: 0
Reputation: 644
You can reverse your loop and start from the last.
var $set = $('.date');
var len = $set.length;
var firstVal = $($set[0]).val();
var lastVal = null;
for (var i = len - 1; i > 0; i--){
if ($($set[i]).val()){
lastVal = $($set[i]).val();
break;
}
}
Upvotes: 0
Reputation: 2815
You can use [value!=''] to select only inputs with values. Then use first() and last() to get values from the first item and last item from the selected list.
var $values = $(".date[value!='']");
$("#firstValue").html($values.first().val());
$("#lastValue").html($values.last().val());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="date[]" class="date" id="date" value="6/17"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/18"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/18"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/19"><br/>
<input type="text" name="date[]" class="date" id="date" value="6/19"><br/>
<input type="text" name="date[]" class="date" id="date" value=""><br/>
<input type="text" name="date[]" class="date" id="date" value=""><br/>
<div>First value: <span id="firstValue"></span></div>
<div>Last value: <span id="lastValue"></span></div>
Upvotes: 1