2016-11-26 40 views
0

我有一個文本框,我正在對其輸入更改事件的數據進行驗證。 我檢查的文本字段中的特定詞的存在,如果該關鍵字存在繼續進行,否則我顯示一個警告,我想價值在這一點上使用jquery重置文本框值更改事件

<input type="text" value="$name$" id="text_messageinput" /> 

輸入框重置將裝與價值$名字$,如果用戶嘗試編輯文本的這一部分,我必須防止 對於這樣我想這碼

$("#text_messageinput").on('input', function() { 
     var input_value = $(this).val(); 
     if (input_value) { 
      var inputs_ok = true; 
      var selected_name = $("#chk_addname").is(":checked"); 
      if (selected_name == true) { 
       var text_input = $("#text_messageinput").val(); 
       if (text_input.indexOf("$name$") === -1) { 
        alert("$name$ should be in message"); 
        inputs_ok = false; 
        //i have to reset textbox value to prev value 
       } 
      } 
     } 
    }); 

所以,我怎麼能重置價值回來時,驗證錯誤發生

+0

你只是想要停止文本編輯? – xzegga

+0

@xzegga沒有用戶可以編輯文本框內容,但不能編輯關鍵字。其餘所有部分是可編輯的 –

+0

檢查這個答案:http://stackoverflow.com/a/15181639/1057007 – xzegga

回答

1

這樣的事情會有所幫助。手動保存舊值並使用此值重置值。

$("#text_messageinput").on('input', function() { 
 
     var input_value = $(this).val(); 
 
     if (input_value) { 
 
      var inputs_ok = true; 
 
      var selected_name = $("#chk_addname").is(":checked"); 
 

 
       var text_input = $("#text_messageinput").val(); 
 
      
 
       if (text_input.indexOf("$name$") === -1 || text_input == "") { 
 
        alert("$name$ should be in message"); 
 
        inputs_ok = false; 
 
            $("#text_messageinput").val($("#text_messageinput").attr('data')); 
 
       } 
 
       else 
 
       { 
 
        $("#text_messageinput").attr('data',text_input); 
 
       } 
 
     } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="text" data="$name$" value="$name$" id="text_messageinput" />

+0

這是我正在尋找的東西,但在我的情況下,值有時不重置。它顯示錯誤警報,但不能重置爲舊狀態 –

+0

你能分享你的代碼在一個jsfiddle或堆棧片段。我會看一下 – Deep