我有7個textfields放在一個表內。這些textfields數據是我在用戶按下提交時從服務器獲得的。在用獲取的數據填充文本字段後,用戶通過新的按鈕提交將該數據提交給服務器。檢查字段是否被編輯?
如果用戶按原樣提交數據,則需要顯示'至少一個字段必須編輯爲'的錯誤消息。如果它至少編輯了一個字段然後提交,我將更新服務器上的數據。
如何檢查用戶是否更改了字段?
問題是我需要存儲用於比較的數據,我必須在JavaScript中使用全局變量(這不是一種好的做法)。
我有7個textfields放在一個表內。這些textfields數據是我在用戶按下提交時從服務器獲得的。在用獲取的數據填充文本字段後,用戶通過新的按鈕提交將該數據提交給服務器。檢查字段是否被編輯?
如果用戶按原樣提交數據,則需要顯示'至少一個字段必須編輯爲'的錯誤消息。如果它至少編輯了一個字段然後提交,我將更新服務器上的數據。
如何檢查用戶是否更改了字段?
問題是我需要存儲用於比較的數據,我必須在JavaScript中使用全局變量(這不是一種好的做法)。
您可以創建一個隱藏的輸入(如說@ lastr2d2)名爲haschange
like
<input type="hidden" name="haschange" id="haschange" value="0" />
並添加jquery或javascript功能,將haschange
的值從0
更改爲1
當每個textfields
發生事件onChange
時。例如,你可以創建一個像波紋管的功能:
$(document).ready(function(){
//Check this link
$("#textfields1").change(function(){
$("#haschange").val(1);
});
});
最後,當你點擊的最後按鈕提交,那麼你可以檢查是否haschange
值0
或1
---編輯--- 如果你想檢查原更換(見@antindexer評論),那麼你可以使用下面的代碼
$(document).ready(function(){
//Check this link
$("#textfields1").change(function(){
var defaultValue = document.getElementById('textfields1').defaultValue;
var currentValue = document.getElementById('textfields1').value;
if(currentValue != currentValue ) {
$("#haschange").val(1);
}
});
});
如果更改一個值,會發生什麼情況。並改回這個值。在這種情況下,你的代碼將會改變。所以你應該仔細閱讀這個問題。 – Khamidulla
你能告訴我你在哪裏喜歡這樣的事嗎? –
「問題是我需要存儲用於比較的數據,我必須在JavaScript中使用全局變量(這不是一個好習慣)。」 < - 這裏。這意味着他實際上他想要保存所有以前的數據並檢查它。 – Khamidulla
你可以這樣做:
將數據屬性添加到您的輸入字段。將「<%= serverValue%>」替換爲您的服務器代碼使用的任何語法。
<form id="form">
<table>
<tr>
<td><input type="text" value="<%= serverValue %>" data-original-value="<%= serverValue %>" /></td>
</tr>
</table>
<input type="submit" value="submit" />
</form>
,然後將腳本代碼的網頁時像這樣的東西(假設你使用jQuery):
<script>
$(function() {
var $form = $('#form');
$form.on('submit', function (e) {
$(form).find('[data-original-value]').each(function (index, el) {
var $el = $(el);
if ($el.val() === $el.attr('data-original-value]')) {
e.preventDefault();
console.log('please edit at least one value');
}
});
});
});
</script>
這裏是一個的jsfiddle - http://jsfiddle.net/X4S4y/1/
可以ATTR data-value
使用(或任何你想要的名稱),以保持原來的VAL UE
例子:(假定您使用PHP)
<input type="text" value="<?php echo $value_1?>" data-value="<?php echo $value_1?>" class="input_text">
<input type="text" value="<?php echo $value_2?>" data-value="<?php echo $value_2?>" class="input_text">
<input type="text" value="<?php echo $value_3?>" data-value="<?php echo $value_3?>" class="input_text">
<input type="text" value="<?php echo $value_4?>" data-value="<?php echo $value_4?>" class="input_text">
在jQuery中,您可以檢查是否有輸入文字的任何變化,然後提交表單
例子:
$(document).ready(function(){
$("form").submit(function(){
var is_changed = false;
$(".input_text").each(function(){
if ($(this).val() == $(this).attr("data-value") {
return false;
} else {
is_changed = true;
}
});
if(is_change == true) {
alert("Please change at least one input");
return false;
}
});
})
你可以使用data()將其存儲在文本字段中。 – RobAu
而不是將數據存儲在全局變量中,您可以爲每個字段創建隱藏輸入(或data-xx屬性) – lastr2d2