gpt4 book ai didi

javascript - 将带有 Perl 变量的内联 javascript 更改为函数

转载 作者:行者123 更新时间:2023-11-30 17:21:51 25 4
gpt4 key购买 nike

我目前有一个带有内联 onChange 属性的 select 标签,如下所示:

<select id="owner_sel" name="owner" 
<% print ' style="display: none"' if(!$user->has_permission($task->cid, $PERMISSION_CHANGE_OWNER)); %>
onChange="if(!this.selectedIndex == 0) {
if(this.form.state_id.value == <%= $STATE_NEW %>) {
this.form.state_id.value = <%= $STATE_ASSIGNED %>
}
} else {
this.form.state_id.value = <%= $STATE_NEW %>
}">

<option></option>
<%
foreach my $h (@sorted_users){
foreach my $uid (keys %{$h}) {
my $selected = ($uid == ($form->{owner} || $task->owner)) ? 'selected="selected"' : '';
print qq{<option value="$uid" $selected>$h->{$uid}</option>};
}
}
%>
</select>

我想将它移动到这样的函数中:

<script>
// code...
</script>

我是 javascript 的新手,我也不知道是否可以在 javascript 函数中以相同的方式调用 Perl 变量?

编辑

<script>
$(document).on('change', '#owner_sel', function() {
if(!this.form.owner_sel.selectedIndex == 0) {
if(this.form.state_id.value == <%= $STATE_NEW %>) {
this.form.state_id.value = <%= $STATE_ASSIGNED %>
}
} else {
this.form.state_id.value = <%= $STATE_NEW %>
}
});
$(document).on('change', '#state_id', function() {
if (this.form.state_id.value = <%= $STATE_NEW %> ){
this.form.owner_sel.selectedIndex = 0;
}
});
</script>

------------问题------------

我将我的代码重写成类似的东西。当它只有一个功能时,一切正常,但是当我像上面的代码片段一样包含两个脚本时,就会出现错误。

我想知道,在我的第二个函数中,如果 state_id = 'NEW' 和 owner_sel 更改为索引“0”,是否会重新触发第一个函数?

最佳答案

<script>
$(document).on('change', '#owner_sel', function() {
if(!this.form.owner_sel.selectedIndex == 0) {
if(this.form.state_id.value == <%= $STATE_NEW %>) {
this.form.state_id.value = <%= $STATE_ASSIGNED %>
}
} else {
this.form.state_id.value = <%= $STATE_NEW %>
}
});
$(document).on('change', '#state_id', function() {
if (this.form.state_id.value == <%= $STATE_NEW %> ){
this.form.owner_sel.selectedIndex = 0;
}
});
</script>

您翻译的方式是正确的。是的,可以将 Perl 变量调用到 javascript 函数中,就像您内联调用它们一样。

您的代码冲突的原因是因为您在 .on('change', '#state_id' 代码中的第二行代码使用了一个“=”,我认为您的意思是使用“==”检查状态是否为"new"。您现在使用的方式只是将 owner_sel.selectedIndex 更改为“0”,每次 state_id 为改变了。

if (this.form.state_id.value == <%= $STATE_NEW %> ){

关于javascript - 将带有 Perl 变量的内联 javascript 更改为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25021288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com