JavaScript 表单验证 "value" 未从表单提交事件传递
JavaScript form validation "value" not being passed from form onsubmit event
我有一个表单使用 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 "
我不明白为什么值 returns 没有验证,但名称 returns 名称值
如果我在 Google Chrome 检查表单提交,绕过验证, colltown_name.value
被提交。
以下是我的表单和验证的片段:-
//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>
您的 colltown_name
值似乎只在您的页面加载时定义一次。因此,当您将 x
传递给表单提交时的 quoteValid
函数时,x
的值是 undefined
,验证失败。
您必须在提交时获取更新后的字段值:
function quoteValid() {
var x = document.forms['quoteRequest']['colltown_name'].value;
if ($.inArray(x, arr) == -1) {
alert(x);
return false;
}
}
我有一个表单使用 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 "
我不明白为什么值 returns 没有验证,但名称 returns 名称值
如果我在 Google Chrome 检查表单提交,绕过验证, colltown_name.value
被提交。
以下是我的表单和验证的片段:-
//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>
您的 colltown_name
值似乎只在您的页面加载时定义一次。因此,当您将 x
传递给表单提交时的 quoteValid
函数时,x
的值是 undefined
,验证失败。
您必须在提交时获取更新后的字段值:
function quoteValid() {
var x = document.forms['quoteRequest']['colltown_name'].value;
if ($.inArray(x, arr) == -1) {
alert(x);
return false;
}
}