我有一个带有一个单选框的表单,单击提交按钮时需要将其输入到数据库中。
我遇到的问题:
如何在不刷新页面的情况下自动更新。那么,如果在数据库中添加了一个选择,它会自动显示在选择选项中吗?
更新代码
$(document).ready(function(){
$('#submitbut').click(function(e){
var updateid = $("#updateid").val();
if(updateid.length == 0){
$("#success").text("make a selection.");
$("updateid").focus();
}
else{
var dataString = 'updateid='+ updateid
$.ajax({
type:'POST',
url:'test.php',
data: {updateid:dataString}
}).done(function(){
$('#success').text('success!');
});
}
e.preventDefault();
});
});
提交页面的原因是您有一些语法错误。我将按随机顺序回答你的观点。
要解决验证问题,您应该检查是否存在值。您检查的不是值,而是文本节点。
您使用了
if(updateid == "--")
但是<option>
标记的值为空。你应该使用这个:
if(updateid.length == 0)
对于AJAX,我喜欢使用done()
函数。出于演示目的,我简化了您的代码,但它看起来像这样:
$.ajax().done(function(){
$('#success').text('success!');
});
你还收到了两份对你没有帮助的虚假陈述。阻止表单提交的正确方法是preventDefault(),您在下面确实有它,但由于您的错误,它没有被调用。
另一个有用的方法是使用<input type="button">
。这样,表单将永远不会提交。
这是一个带有工作验证和AJAX 的代码演示
- js不会禁用表单的默认行为。您必须从提交按钮中删除type="submit"
可能使用$('#submitbut').attr('type', '');
-
默认情况下禁用该按钮,并检查选择框的更改
$('#selectbox').onChange(function(){if($(this).val()!='')$('#submitbut').removeAttr("已禁用","已禁用);其他的$('#submitbut').attr('disabled','disabled);});
-
对getoptions.php进行ajax调用,在这里从db中检索所有选项,并将它们与select中的选项进行比较。