我的表单上有2个地址条目。我还有2个单选按钮来指定"首选"邮寄地址。
我试图验证这些2并且我不确定我是否正确地执行了这些操作。如果我填写了两个地址似乎有效,但如果其中一个地址没有填写,我似乎无法正确验证。
这是执行验证的javascript:
function checkMailingPrefs() {
var prefs = ["MailPrefHome", "MailPrefBusi"];
var field = ["HomeAddress1", "BusinessAddress1"];
for (i = 0; i < 2; i++) {
if ($("#"+prefs[i]).is(":checked") && $("#"+field[i]).val() == "") {
$("#" + prefs[i]).prop('checked', false);
$("#MailPrefBusi").validationEngine('showPrompt', 'You must select the correct Mailing Preference', 'error', true);
return false;
}
if ($("#"+field[i]).val() == "" || !$("#"+prefs[i]).is(":checked")) {
$("#MailPrefBusi").validationEngine({promptPosition : "bottomRight", scroll: true}).validationEngine('showPrompt', 'You must select the correct Mailing Preference', 'error', true);
return false;
}
}
return true;
}
我使用的是jQueryValidationEngine,但它也没有正确验证它们。我只用它来显示这些字段的验证错误。
以下是标准:
如果选中MailPrefBusi,则必须填写BusinessAddress1。 如果选中MailPrefHome,则必须填写HomeAddress1。
如果未选中MailPrefxxx,则显示错误。如果没有填写xxxAddress1,则显示错误。
答案 0 :(得分:0)
看起来你的第二个if语句if ($("#"+field[i]).val() == "" || !$("#"+prefs[i]).is(":checked")) {
在你不想要的时候返回false。你应该能够用这个来完成你想要的东西:
function checkMailingPrefs() {
var prefs = ["MailPrefHome", "MailPrefBusi"];
var field = ["HomeAddress1", "BusinessAddress1"];
for (i = 0; i < 2; i++) {
if ($("#"+prefs[i]).is(":checked") && $("#"+field[i]).val() == "") {
// enhanced validation function call here
return false;
}
}
//if the user hasnt checked anything, you can remove this if the form should validate without the user having to set a radio button
if(!$("#MailPrefBusi, #MailPrefHome").is(":checked")) {
// enhanced validation function call here
return false
}
return true;
}
你可以看到它在这个JS小提琴上工作:https://jsfiddle.net/h0vj9r35/
希望有所帮助!
答案 1 :(得分:0)
如果您试图根据具有n no的场景中的复选框值来确定是否填充了相应的字段。复选框和字段,并希望避免硬编码值,您可以使用以下:
var prefs = ["MailPrefHome", "MailPrefBusi"];
var field = ["HomeAddress1", "BusinessAddress1"];
var allEmpty = false;
var valueError = ""
for (i = 0; i < 2; i++)
{
if ($("#"+field[i]).val() == "" || !$("#"+prefs[i]).is(":checked")) {
if(!$("#"+prefs[i]).is(":checked"))
valueError += prefs[i] + "," ;
else if($("#"+field[i]).val() == "")
valueError += field[i];
allEmpty = true;
}
if ($("#"+prefs[i]).is(":checked") && $("#"+field[i]).val() == "")
{
$("#" + prefs[i]).prop('checked', false);
allEmpty = false;
alert("Need to enter " + field[i]);
return false;
}
if((i == 1) && allEmpty)
{
alert("You need to select " + valueError);
return false;
}
}
return true;