我有一张表想要复制。此表包含带有id和name的输入。此表还包含javascript。
<table>
<tr>
<td>
<input type="text" id="text_1" name="text_1"/>
<script>
jQuery( "#text_1" ).on( "change", function() {
alert("do...");
});
</script>
</td>
</tr>
</table>
我可以轻松地将id和名称从text_1更改为text_2,如下所示:
jQuery(clone).find("*").each(function(index, element) {
if(element.id)
{
var matches = element.id.match(/(.+)_\d+/);
if( matches && matches.length >= 2 ) {
element.id = matches[1] + "_" + demandeNumber;
}
}
if(element.name)
{
var matches = element.name.match(/(.+)_\d+/);
if( matches && matches.length >= 2 ) {
element.name = matches[1] + "_" + demandeNumber;
element.value = "";
}
}
});
但是如何从这里更改javascript的id:
jQuery( "#text_1" ).on( "change", function() {
alert("do...");
});
到
jQuery( "#text_2" ).on( "change", function() {
alert("do...");
});
我尝试更改此设置,但如果克隆的输入发生更改,则不会抛出事件。
你能帮助我吗?
谢谢。
答案 0 :(得分:1)
请参阅Jquery方法.clone():
使用:
//That true param indicates that event handlers should also be cloned
var cloneElement = $("yourElement").clone(true);
答案 1 :(得分:0)
好的但是我已经为我的输入创建了宏(速度宏),选择和其他字段和脚本集成在宏上以避免像这样调用外部宏的javascript
#macro( textField $hasTr $hasTd $hasLabel $hasError $label $attr $size $maxLength $helpText $isReadonly $isMandatory $autofocus $beanValue $bean )
#if( $hasTr ) <tr> #end
#if( $hasTr || $hasTd ) <td class="label"> #end
#if( $hasLabel )
#if( !$isReadonly ) <label for="$attr"> #end #text("$label") #if( !$isReadonly ) </label> #end #if( $isMandatory ) <span class="mandatory">*</span> #end
#end
#if( $hasTr || $hasTd ) </td> #end
#if( $hasTr || $hasTd ) <td class="value"> #end
#if( $isReadonly )
<input type="hidden" id="$attr" name="$attr" value="$!escUtils.escapeHtml( $!beanValue )" />
<span class="readonly">$!beanValue</span>
#else
<input type="text" maxlength="$maxLength" id="$attr" name="$attr" value="$!escUtils.escapeHtml( $!beanValue )" size="$size" #if( $autofocus ) autofocus="autofocus" #end />
#end
#if( $helpText != "" )
<img src="#media("picto/16x16/help.png")" id="${attr}_image" alt="" />
<script>
#set( $imageId = "${attr}_image" )
jQuery( "#$imageId" ).qtip( {
prerender: true,
content : { text : "$!helpText" },
show: { delay: 1 },
effect: false,
position: { my: 'top left', target: 'mouse', viewport: jQuery(window), adjust: { x: 10, y: -15 } },
style: { classes: 'qtip-lgcf qtip-rounded' }
});
</script>
#end
#if( $hasTr || $hasTd ) </td> #end
#if( $hasTr || $hasTd ) <td class="error"> #end
#if( $hasError ) #if( $bean.errors.containsKey( "$attr" ) ) #set( $errorValue = $!bean.errors.get("$attr") ) <span>#text("$errorValue")</span> #end #end
#if( $hasTr || $hasTd ) </td> #end
#if( $hasTr ) </tr> #end
我应该能够在脚本中为每个字段更新id并重新加载javascript ...
答案 2 :(得分:0)
有两种方法可以做到这一点。 1.使用正则表达式并用新的id替换旧的id。 2.取出javascript阻止并创建如下函数:
<script>
onTextChange = function(obj)
{
alert("do....");
}
</script>
并使用文本框的更改事件来调用此函数
<input type="text" id="text_1" name="text_1" onChange="onTextChange(this);"/>