2011-09-02 75 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

相关问题