2011-09-02 76 views
0

我試圖:的Javascript:使用訪問服務器端的變量客戶端的可變

  1. 使用jQuery「迴路」通過屬於相同的CSS類網頁上的所有元素(「樣板」)
  2. 檢查每個服務器端分配的值的當前值(屬性:StaticPrefill)
  3. 如果兩個值不匹配,則應用特殊的css類(「editedbackcolor」)(即,我試圖在某人編輯時文本框上的預填文本)

CSS我使用:

.boilerplate =分配到所有的文本框我想在表格上籤

.editedbackcolor =不同的色調我要分配到文本框,其中電流值不等於服務器端的StaticPrefill值。

jQuery代碼我至今是:

jQuery的(文件)。就緒(函數(){

 // select each element with class boilerplate and run a function against it 
     jQuery('.boilerplate input').each(function() {    
      var target1 = jQuery(this).attr("id"); 
      matchcheck(target1); 
     }); 
    }); 

,我工作的「matchcheck)功能,這也正是。

function matchcheck(){   
       var TSP1 = '<%= TextBox1.StaticPrefill %>'; 
       // If current textbox value does NOT equal it's static prefill value 
       if (document.getElementById("Textbox1_textbox1").value != TSP1) { 
       alert("TB1 has differnt value than static prefill"); 
       // change background color to flag it 
       jQuery("#Textbox1_textbox1").addClass("EditedBackColor");     
       } 
      } 
:我有一個問題,我試圖拉回到服務器端「StaticPrefill」屬性,我可以作爲一個比較使用價值我已經成功地通過硬編碼控制的名字,像這樣查詢

工作正常,但我不想使用變量來遍歷函數第一行中的所有元素,而不是硬編碼的「TextBox1」。我嘗試了不同的語法,試圖在'<%='和'%>'標籤之間添加一個變量,但是當我嘗試這樣做時,頁面無法編譯。

這可能不使用代碼背後的某種類型?有什麼建議麼?

回答

0

如果我理解您的問題,更簡單的方法是綁定到jQuery中的change event

$(document).ready(function() { 
    jQuery('.boilerplate input').change(function() { 
     if(jQuery(this).val() !== jQuery(this).attr("prefill")) { 
     jQuery(this)removeClass('boilerplate').addClass("EditedBackColor"); 
     } 
    }); 
}); 

您還需要爲輸入元素添加一個名爲「prefill」的屬性。你可以做那個服務器端或客戶端。它應該是這個樣子:

<input class="boilerplate" id="input1" type="text" prefill="123" value="123"/> 

這裏需要說明的是,如果他們改回原來的值時,它仍然會顯示爲改變。我不確定這是否適合您的情況。他們確實改變了它本身。如果它不存在,則必須將原始值保存爲屬性。另一種選擇是發送一個模型,也許是一個json對象,並與基於索引的模型進行比較。

+0

我的問題是不適用的CSS類,它做的每個元素的值的窗體上的對證是單獨的服務器端「StaticPrefill」屬性值。我需要比較這些來決定如果我想做CSS更改.. – Schmitty23

+0

我已經更新了答案。讓我知道這是否合理。 – kakridge

相關問題