我想验证几个输入字段。除焦点方法外,下面的代码工作正常。我希望它不能解释与表单上的输入位置相关的“输入”变量。问题:如何记录特定输入的位置,请记住有20多个输入? tks!
function validateInput(quantity,input)
{
if (quantity.value !== " ") {
if(isNaN(quantity)) {
$(".myerror_alert").append('<div class="alert alert-danger"><strong>Warning!</strong> You have entered an non valid character, go back and enter a real number </div>');
input.focus(); // THIS DOES NOT WORK
return false;
}
}
return true;
}
$(".product_table").on('change', '.edit_quantity',function (){
var quantity = $(this).parents(':eq(1)').find('input').filter(".edit_quantity").val();
var input = $(this).parents(':eq(1)').find('quantity').filter(".edit_quantity");
validateInput(quantity, input);
// MORE CODE GOES HERE //
});
HTML:
<tr class='delete_row'>
<td><input class="product_id form-control" readonly="readonly" name="product_id[0]" type="text" value="123"></td>
<td><input class="edit_product_id form-control" readonly="readonly" name="product_id[0]" type="text" value="Euroshake Blackstone"></td>
<td><input class="edit_quantity" name="product_id[0]" type="text" value="120"></td>
<td id="price"><input class="unit_price form-control" readonly="readonly" style="text-align:right;" name="price" type="text" value="120.00"></td>
<td><input class="line_cost form-control" readonly="readonly" style="text-align:right;" name="cost" type="text" value="14400.00"></td>
<td>
<span style="padding-left:12px;"><input name="delete" type="checkbox" value="123"></span>
</td>
</tr>
答案 0 :(得分:0)
我所做的是在这部分.find('quantity')
中你可能意味着.find('input')
作为之前的陈述,然后我发现你在那里使用相同的元素。因此,作为相同的元素,您不需要保持它的引用(在input
var中)和它的值(quantity
var)传递给{{ 1}}。由于这是一个函数,为什么不使用更少的代码并使函数处理它,对吧?因此,我已将其更改为仅传递元素引用并在函数内部使用此条件validateInput
我可以检查元素是否为空,以及它是否为数字:
if ($input.val().length > 0 && isNaN($input.val()))
您已经完成的一个重要错误 - 您可能 - 在没有注意到的情况下 - 是您浏览元素树以查找输入,但是当您执行function validateInput(input)
{
var $input = $(input);
if ($input.val().length > 0 && isNaN($input.val())) {
$(".myerror_alert").append('<div class="alert alert-danger"><strong>Warning!</strong> You have entered an non valid character, go back and enter a real number </div>');
input.focus();
return false;
}
return true;
}
$(".product_table").on('change', '.edit_quantity',function (){
validateInput(this);
});
时#39;事实上,在具有类$(".product_table").on('change', '.edit_quantity'
的元素中使用类edit_quantity
绑定所有元素中的事件,因此在事件中,您的product_table
已经输入,你不需要像我一样去追求它:
this
我希望这会有所帮助。