动态更改属性id输入jquery

时间:2013-09-18 11:27:47

标签: jquery jsp

这里我想影响一个值来动态地输入id的id  这里我的代码jQuery:对于这段代码,我可以将输入的第一个值更改为0 id=ouseval_0__SousEval_Note,但我有很多带有动态ID的输入

<script type="text/javascript">
$("#idselectdiv .tdLabelwidht").change(function () {
    var idd = $(this).val();
    alert(" selected value@ ="+idd);
    if(idd=="-1"){
        alert(" Veuillez selectionner un bon choix ");  
            }
    if($(this).find("option:selected").text()!="Conforme"){
        $("#souseval_5__SousEval_Note").val(0);         
    }
    alert(" selected option- "+$(this).find("option:selected").text());

    });
</script>

在我的JSP中,我有一个slect标签,如果用户选择了不同符合的select标签选项,我想在此处编辑的值:

<s:set name="n" value="0"/>
<s:iterator value="item"  status="idStatus"  >
<s:select
        label="%{Item_Libelle}"  
        headerValue="---------------- Select ---------------"
        headerKey="-1"
        list="sousitem"
        listKey="SousItem_ID"   
        listValue="SousItem_Libelle"
        cssClass="tdLabelwidht" 
        id="selectedId"
        name="%{'souseval['+#n+'].sousEvalItem.SousItem_ID'}"  
/>  
<s:textfield    name="%{'souseval['+#n+'].SousEval_Note'}"      
        value="%{ponderation}"    
                placeholder="entrer  Note"
/>
<s:set name="n" value="%{#n+1}"/>   
</s:iterator>

等效代码HTML:

<tr>
<td class="tdLabel"></td>
<td>
<input id="souseval_5__SousEval_Note" type="text" placeholder="entrer Note" value="10" name="souseval[5].SousEval_Note">
</td>
</tr>

1 个答案:

答案 0 :(得分:0)

我并不完全熟悉JSP,但作为服务器端语言,它必须有一些方法可以简单地将文字值回显给客户端输出。这通常发生在服务器端代码中。例如,如果您的标记中有一些原始HTML,您只需要在其中放入一些文本。

用于将原始值回显到输出的相同机制也可用于回显JavaScript代码。从服务器端代码的角度来看,HTML和JavaScript之间确实没有区别。它只是输出呈现给页面。它只是在客户端才变得重要。

所以假设你有这样的JavaScript:

$('#souseval_5__SousEval_Note').val(0);

现在假设您希望5基于变量是动态的。由于这是JavaScript代码,因此需要是客户端JavaScript变量:

$('#souseval_' + someVariable + '__SousEval_Note').val(0);

但是由于我们讨论的是服务器端变量,这些变量可以发出客户端常量。所以客户端代码最终看起来像这样:

$('#souseval_' + '5' + '__SousEval_Note').val(0);

所以,比方说,你想要其中的5个:

$('#souseval_' + '1' + '__SousEval_Note').val(0);
$('#souseval_' + '2' + '__SousEval_Note').val(0);
$('#souseval_' + '3' + '__SousEval_Note').val(0);
$('#souseval_' + '4' + '__SousEval_Note').val(0);
$('#souseval_' + '5' + '__SousEval_Note').val(0);

并且您希望基于某些服务器端集合在循环中构建它们。同样,我不熟悉JSP,但在伪代码中它可能看起来像这样:

<% for(int i = 0; i < someCollection.Length; i++) { %>
    $('#souseval_' + '<% i %>' + '__SousEval_Note').val(0);
<% } %>

基本上这是通过服务器端集合循环来发出多行客户端代码。这将创建上面的5行。所以在客户端它没有循环,它只是运行多个语句。但是维护的代码,即服务器端代码,正在使用基于集合的循环。