【发布时间】:2014-01-06 15:11:45
【问题描述】:
我有一个动态生成的表单。表单内部是一个执行 AJAX 请求的函数,成功后,修改用于验证的隐藏字段的值(将其设置为空字符串)。(隐藏字段设置为 "required:true" )
但是,在函数成功执行后,隐藏字段不会触发 jQuery 的验证,我可以提交表单。只有当我故意触发其他字段的验证时才会触发隐藏字段的验证,并且隐藏字段的错误消息会与其他错误消息一起出现。
功能:
function DeleteImageDP(){
var itemid=$('#DisplayDeleteItemID').val();
var filepath=$('#DisplayDeleteFilePath').val();
var itempicid=$('#DisplayDeleteItemPicID').val();
var cfm=confirm("Confirm deletion of picture? ( Note: Picture wil be deleted permanently.");
if(cfm == true)
{
$.ajax({
url:"delete/deletedp.php",
type:"POST",
data:"ItemID="+itemid+"&FilePath="+filepath+"&ItemPicID="+itempicid,
success:function(){
alert("Image successfully deleted.");
$('#ImagePreviewDP').prop('src','').hide();
$('#ImagePreviewDPValidate').val('');
$('#DisplayDelete').hide();
},
error:function(){
alert("Image could not be deleted due to an error.");
}
});
return true;
}
else
{
return false;
}
};
验证:
$('#ItemDetailsContainer').on('change',function(){
//Validation code .....
ImagePreviewDP:{
required:true
},
//More validation code....
});
表格(摘录):
//Input and preview for Display Pic
echo"<div class='BizEditItemDetails' >";
//More code above
echo"<img id=ImagePreviewDP name=ImagePreviewDP class='ImagePreview' src=\"$dp\" > ";
echo"<input type='hidden' id='ImagePreviewDPValidate' name='ImagePreviewDPValidate' value=\"$dp\" >";
//More code below
echo"</div>";
为什么不将 $("#ImagePreviewDP") 的值设置为空字符串触发 on.change?另外,我如何在函数成功执行时触发验证,而不是仅与其他错误?
【问题讨论】:
-
#ItemDetailsContainer的change事件加载后需要订阅。 -
id为
ItemDetailsContainer的元素是什么?你还没有在你的 HTML 中显示出来。从名字上看,它听起来像一个 div,我不相信它有原生的change事件。
标签: javascript jquery ajax validation