2012-10-03 130 views
0

我使用此示例代码: http://www.w3schools.com/php/php_ajax_php.asp 做一个实时名称搜索和显示,如果它是否可用。PHP Ajax禁用/启用提交按钮

如果名称正在使用,如何禁用表单提交按钮,但如果名称可用,则启用它?

很多感谢:)

感谢您的意见。我已将此添加功能,现在当我在任何类型的按钮禁用..

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    $('#submit').attr('disabled', 'disabled'); 
    } 
    } 

我怎么做这只是一场比赛? 谢谢

+0

问题是我不知道什么尝试。我打算在检查页面上添加一个if else,所以如果有匹配项则禁用该按钮。 – MacMan

+0

我说对了,你已经使用jQuery来禁用按钮,但不是为了Ajax?使用jQuery比手工更容易。 – Sven

+0

该按钮通常处于活动状态,但我确实已经为其他功能加载了jquery。使用代码@Zulakis张贴我确实让它禁用/启用。只需要得到如果responsetext包含不等于工作:) – MacMan

回答

0

你得检查名称相匹配与否,然后禁用或启用这样的:

if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
     if (xmlhttp.responseText == "available") { 
      document.getElementById("submit-button").disabled = false; 
     } else { 
      document.getElementById("submit-button").disabled = true; 
     } 
    } 
+0

谢谢。这有效..但我们可以做,如果responsetext包含不等于? – MacMan

+0

当然。 'if(xmlhttp.responseText.indexOf(“available”)!= -1){...}' – Zulakis

+0

我改变了这个,但现在它不起作用! 'if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById(“txtHint”)。innerHTML = xmlhttp.responseText; (xmlhttp.responseText.indexOf(“available”)!= -1){document.getElementById(“submit-button”)。disabled = false; } else { document.getElementById(“submit-button”)。disabled = true; } }' – MacMan

0

当在回调中返回一个名字时,向提交按钮添加disabled =“disabled”。 ('#submit-button')。attr('disabled','disabled');

+0

谢谢 - 我该怎么做? – MacMan

+0

你应该提及使用jQuery或原型,或任何其他JavaScript库使用fizzle;) – dbf

0
<input id="id_name"type="text" name="name" onKeyup="testName();"/> 
<script> 
function testName() { 
$.ajax({ 
    var data = $('#id_name').val(); 
    url:'test.php', 
    success: function(data){ 
    if(/*name in use*/) {$('#submit-button').attr('disabled', 'disabled');} 
    else {$('#submit-button').removeAttr("disabled");} 
    } 
    }); 
} 
</script> 
+0

你可以使用testName()onfocus事件也 – chokrijobs