我试图通过提交按钮的onclick事件触发javascript但不能, 我的代码的详细信息是“我有一个名为filter的按钮和两个带有Id和Name的文本框, 我想要的是“当我在Id文本框中输入值并单击过滤器然后我希望使用QueryString在URL上显示值”。 这是代码..
print "<td><b>UserId</b></td><td><input type=\"text\" name=\"User_Id\"
value=\"" .$Id."\" size=\"6\" ></td>";
print "<td><b>UserName</b></td><td><input type=\"text\" name=\"User_Name\"
value=\"" .$Name ."\" size=\"10\"></td>";
print "<td><input type=\"submit\" name=\"Filter\" value=\"Filter\"
onClick=\"FilterExpression($Id,$Name)\"></td>";
点击过滤后,此代码被执行..
if ( $q->param("Filter") )
{
$Id=$q->param('User_Id');
$Name=$q->param('User_Name');
if ($Id ne "" )
{
$filterexpression= $filterexpression." UserId like '" .$Id. "%' and " ;
}
if ($Name ne "" )
{
$filterexpression= $filterexpression." UserName like '" .$Name. "%' and " ;
}
}
Javascript ..
<script type="text/javascript">
function FilterExpression(Id,Name)
{
var val3=Id;
var val4=Name
window.location="List.cgi?Id="+val3+"&Name="+val4
}
</script>
请帮我找到解决方案,谢谢。
答案 0 :(得分:3)
看起来您可能需要报价。试试onClick=\"FilterExpression('$Id','$Name')\"
答案 1 :(得分:3)
&lt; input type = \“text \”id ='User_Id'name = \“User_Id \”value = \“”。$ Id。“\”size = \“6 \”&gt;
并编写这样的Javascript。
function FilterExpression() { var val3=document.getElementById("User_Id").value; var val4=document.getElementById("User_Name").value; window.location="List.cgi?Id="+val3+"&Name="+val4 }
答案 2 :(得分:1)
你的问题来自于尝试复杂且难以管理报价和逃避。
如果你必须在Perl程序中逃避引号,很可能,你做错了。
Perl具有many different ways to quote strings,可以轻松管理字符串和填充变量值。强大的引用操作符使得引用字符的转义极为罕见。
我将向您展示几个例子。
您的示例可以使用interpolating here-doc处理:
my $filter_expression = FilterExpression($Id,$Name);
print <<"END_HTML";
<td><b>UserId</b></td><td><input type="text" name="User_Id" value="$Id" size=\"6\" ></td>"
<td><b>UserName</b></td><td><input type="text" name="User_Name" value="$Name" size="10"></td>
<td><input type="submit" name="Filter" value="Filter" onClick="$filter_expression"></td>
END_HTML
或者您可以使用the qq
operator来引用汇总输出:
print qq{<td><b>UserId</b></td><td><input type="text" name="User_Id" value="$Id" size="6" ></td>};
print qq[<td><b>UserName</b></td><td><input type="text" name="User_Name" value="$Name" size="10"></td>];
print qq(<td><input type="submit" name="Filter" value="Filter" onClick=."$filter_expression"></td>);
或者,如果您坚持避免插值,只需使用single quote:
print '<td><b>UserId</b></td><td><input type="text" name="User_Id" value="'
.$Id
.'" size=\"6\" ></td>';
print '<td><b>UserName</b></td><td><input type="text" name="User_Name" value="'
.$Name
.'" size=\"10\"></td>';
print '<td><input type="submit" name="Filter" value="Filter" onClick="'
.FilterExpression($Id,$Name)
.'"></td>';
另外,请认真考虑使用模板系统来处理HTML生成。