【发布时间】:2021-03-10 19:58:36
【问题描述】:
我有一个使用 jQuery 自动完成来填充输入的表单。为了防止用户输入前几个字母,然后假设字段已完成,我将合并一个 JS 表单验证,将输入与数组进行比较。比较工作正常,但由于某种原因,输入字段值colltown_name 未传递给表单验证。但是其他输入字段是。
我创建了一个测试环境,在出错时会显示在colltown_name 输入上提交的内容。
var x = document.forms["quoteRequest"]["colltown_name"].value; //returns: "Localhost says " , so it is receiving nothing
var x = document.forms["quoteRequest"]["colltown_name"].name; //returns: "Localhost says colltown_name "
我不明白为什么 value 不返回任何验证,但 name 返回 name 值
如果我在谷歌浏览器上检查表单提交,绕过验证,colltown_name.value 被提交。
以下是我的表单和验证的 sn-ps:-
//var x = document.forms["quoteRequest"]["descr_goods"].value; //returns value "Goods"
//var x = document.forms["quoteRequest"]["colltown_name"].name; //returns name "colltown_name"
var x = document.forms["quoteRequest"]["colltown_name"].value; //returns nothing
var arr=["AANDRUS, Bloemfontein", "AANHOU WEN, Stellenbosch", "ABBOTSDALE, Western Cape"];
function quoteValid() //ADDED BY ADIEB
{
if ($.inArray(x, arr) == -1)
{
alert(x);
return false;
}
}
<form name="quoteRequest" action="index.php?route=product/product" method="post" enctype="multipart/form-data" class="form-horizontal" onsubmit="return quoteValid()">
<div class="ui-widget">
<input type="text" id="ctags" class="form-control col-md-8" autocomplete="off" placeholder="Start typing Collection Town" name="colltown_name">
<input id="ctag" type="hidden" name="colltown">
</div>
<input type="text" class="form-control col-md-6" id="desc" name="descr_goods" value="Goods" required>
【问题讨论】:
-
我不确定我是否完全理解你的问题,但这里的任何代码有帮助吗? jsfiddle.net/natelegakis/ruwgoe95 我猜 prevenDefault 和/或 .focus 可能会有所帮助。或者,也许这可以在您的代码中的某处使用。 if ( e.keyCode == $.ui.keyCode.TAB) 看看这个小提琴。 jsfiddle.net/uymYJ/8
-
问题实际上是,当“onsubmit 事件被调用时,colltown_name 的值没有被传递给 validate 函数”,因此它无法评估输入是否有效。
标签: javascript html jquery validation jquery-ui-autocomplete