当尝试向中继器添加行时,我正在尝试检查以确保中继器页脚中的某些字段不为空。我正在尝试通过 javascript 验证这一点,并使用多个不同中继器的可重用代码(通过滥用 ID):
switch (category)
{
case 'Hardware':
if ($("#HWtable").find("#AddProduct").val() == null ||
$("#HWtable").find("#AddPartNumber").val() == null ||
$("#HWtable").find("#AddPartCost").val() == null ||
$("#HWtable").find("#AddUnitPrice").val() == null ||
$("#HWtable").find("#AddQuantity").val() == null)
{
alert("show HW message");
HWEmptyFieldAlert.show();
return false;
}
break;
问题是,即使我在那里返回 false,它仍然会发回。我还将它包含在我的 clientclick 调用中:
onClientClick="return EmptyFieldCheck('Hardware');"
如果我注释掉开关并只说 return false,一切都会按预期进行。我最好的猜测是我只是从 if 或 switch 中返回,而不是回发。我该如何正确地做到这一点?
编辑:根据下面其他人的建议,我尝试了一个标志并在客户端单击时反转真/假状态。我现在下面的内容仍在发回,我真的不知道为什么。当我点击时,我确实看到了警报,所以已经到了这一步。
var emptyFlag;
switch (category)
{
case 'Hardware':
/*
if ($("#HWtable").find("#AddProduct").val() == null ||
$("#HWtable").find("#AddPartNumber").val() == null ||
$("#HWtable").find("#AddPartCost").val() == null ||
$("#HWtable").find("#AddUnitPrice").val() == null ||
$("#HWtable").find("#AddQuantity").val() == null)
{
*/
alert("show HW message");
HWEmptyFieldAlert.show();
emptyFlag = false;
//}
break;
default:
alert("doesn't work");
return false;
break;
}
return emptyFlag;
这和我使用中继器的OnItemCommand功能有关系吗?返回 false 而不是 emptyFlag 不再有效。 OnClientClick =“返回错误;”不过确实会停止回发。
最佳答案
在这种情况下,确实是 return false
是从 switch
返回,而不是整个函数。您想要做的是创建一个标志变量,当您想在切换后从函数返回时,请检查该标志:
function EmptyFieldCheck( .. )
{
var returnFlag = false;
switch (category) {
case 'Hardware':
if(..)
{
...
returnFlag = true;
}
break;
...
}
if(returnFlag) return false;
/* Other posting code here */
}
关于javascript - javascript 在 switch 中返回 false 后仍在发回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504554/