我正在尝试格式化文本区域中的用户输入,幸运的是,该部分可以用多余的空格和回车键替换为单个空格,但是只有在第二次单击按钮时才可以。我想知道怎么了以及如何解决这个问题:

这是我的代码和小提琴:http://jsfiddle.net/EnXp7/

HTML

<textarea type="text" id="address" onfocus="if(this.value===this.defaultValue)this.value=''" onblur="if(this.value==='')this.value=this.defaultValue">
   Input Address Here
</textarea>
<input type="button" id="Validate" value="Validate" onClick="valbtn()">


jQuery / Javascript

function valbtn() {
    $("#Validate").click(function () {
        $('#address').val($('#address').val().replace(/\s+/g, ' '));
    });
    var x = document.getElementById("address").value;
    if (x === "" || x === "Input Address Here") {
        alert("No Input");
    }
}

最佳答案

第一次单击将调用当前函数valbtn(),并将您的验证绑定到再次单击。因此,您必须在实际运行该验证之前再次单击。

如果您继续调用valbtn() onclick,请按如下所示修改函数:

function valbtn() {

    // Run it instead of binding it to the click event
    $('#address').val($('#address').val().replace(/\s+/g,' '));

    var x = document.getElementById("address").value;
    if (x === "" || x === "Input Address Here") {
        alert("No Input");
    }
}

07-24 09:15