1

我有这个表格:

<form>
  <input id="checkuser" type="text" name="user" placeholder="Your username"/>
</form>

我用 JQuery 做的是检查所写的用户名是否可用。这是 JQuery 代码:

 $('#checkuser').click(function (){

     $(this).change(function () {
     $.ajax( {
       url: '/check',
       type: 'POST',
       cache: false,
       data: { checkuser: $(this).val() },
       dataType: "json",
       complete: function() {

    },

    success: function(data) {

        var check = JSON.stringify(data.aval);

        if (check == "false") {

            $('<p>Not available.</p>').insertAfter('#checkuser');

        }

        else {

              $('<p> Available!</p>').insertAfter('#checkuser');

        }

    },
    error: function() {

       console.log('process error');

    }
   });   
  }); 
 });

问题是:如果用户不可用,则用户必须重写用户名,当 jQuery 重新检查是否可用时,JQuery 不会重写 的内容,而是在旧的 ergo 旁边<p>创建另一个,结果如下:只写其中之一。我该如何解决这个问题?<p><p>Not available.Available!

4

3 回答 3

2

为了解决这个问题,我会<p></p>在输入之后添加一个空白标签,并在需要时更新这个标签。

     <form>
       <input id="checkuser" type="text" name="user" placeholder="Your username"/>
       <p></p>
     </form>
     $('form p').text('Available!');
于 2012-12-29T21:20:50.890 回答
2

insertAfter将新的 html 上下文附加到 div。而是在 div 之后创建另一个 divcheckuser并替换里面的 html:

<input id="checkuser" type="text" name="user" placeholder="Your username"/>
<div id="msg"></div>

然后只是:

$('#msg').text('your text if available or not here');
于 2012-12-29T21:20:55.180 回答
1

insertAfter ()方法按设计工作:它找到元素(在本例中为#checkuser)并在其后附加一个新段落。

您可能需要在 INPUT 标记之后创建一个 DIV 或 SPAN 元素,如下所示:

<span id="checkuser-validation"></span>

然后调整您的 JavaScript 代码,使其如下所示:

if (check == "false") {

        $('#checkuser-validation').Empty();
        $('#checkuser-validation').Html('Not Available');

}

... 等等。希望有帮助:)

于 2012-12-29T21:24:49.667 回答