【发布时间】:2015-08-20 04:23:26
【问题描述】:
我正在尝试对此自动完成添加验证检查,但是由于某种原因,因为它位于 each() 块中,这给我带来了很多问题。
完整代码:
<input type="text" class="productOptionSerialNumber" value="@opt.SerialNumber" data-part-num="@opt.PartNumber" />
$(".productOptionSerialNumber").each(function () {
var partNum = $(this).attr("data-part-num");
$(this).autocomplete({
source: "@Url.Action("SerialPartNumStockSiteAutoComplete", "Ajax")?stocksitenum=LW&model=" + $("#Form_Prod_Num").val() + "&partnum=" + partNum + "&callnum=" + $("#Form_Call_Num").val(),
minlength: 2,
delay: 300,
})
});
对于这个 .productOptionSerialNumber 函数,我无法进行验证。
我有一个以前工作过的工作示例(如下所示),但使用此特定功能它无法验证,我尝试以与以前相同的方式添加它,但没有运气。
工作:
$(document).ready(function () {
//$('input[name="Form.InstallType"]').on('change', function() {
var val = $('input[name="Form.InstallType"]:checked').val();
if (val == '1') {
var validOptions = "@Url.Action("SerialProdNumStockSiteAutoComplete", "Ajax")?stocksitenum=LW&model=" + $("#Form_Prod_Num").val();
previousValue = "";
$('#abc').autocomplete({
autoFocus: true,
source: validOptions,
}).change(function(){
var source = validOptions;
var found = $('.ui-autocomplete li').text().search(source);
console.debug('found:' + found);
var val = $('input[name="Form.InstallType"]:checked').val();
if (found < 0 && val === '1') {
$(this).val('');
alert("You must select a value from the auto complete list!");
}
});
}
});
因此,如果我不选择自动完成,我会收到警报。我正在尝试在代码的第一部分实现这一点,但因为它在 .each 和 .attr 中,所以不喜欢这种方式。
任何想法
【问题讨论】:
-
请不要使用jquery-validate 标签,除非你正在使用这个插件。已编辑。谢谢。
-
@Sparky 很好地验证了我的 jquery,所以你告诉我我可以用这个代替。编辑恢复正常。
-
根据tag description,jquery-validate 标签用于The jQuery Validate plugin written and maintained by Jörn Zaefferer。简单地使用 jQuery 进行任何表单验证都不是这个标签的意思。
-
“不喜欢我这样做的方式” 您能否更准确地描述问题:控制台中是否显示错误?添加代码 sn-p 或 jsfiddle 也会有所帮助。
-
首先,您的自动完成源应该是一个数组或一个 url.. 调用时.. 将获取一个数组.. 您正在使用
@Url.Action.. (所以您正在使用Razor,对吗?...确保您正在解析页面(处理服务器端功能)并确定您传递给服务器端 razor 辅助方法的字符串参数与生成的客户端字符串(url ) 它会变成(单引号,双引号)..
标签: javascript jquery validation jquery-ui