プロが教える店舗&オフィスのセキュリティ対策術

checkboxをshiftキーを押しながらクリックすると複数選択するソースなのですが、
htmlファイルでは動作するのですが、以下のようにperl(cgiファイル)では複数選択できません。
もしかしたらjavaのコーディングの問題かもしれませんが、行き詰っております。
どなたかご教授お願い申し上げます。

↓-------------------------------------------
#!c:/Perl/bin/perl
require 'cgi-lib.pl';
require 'jcode.pl';
print "Content-type: text/html\n\n";

print <<EOM;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.field_j.js"></script>
<script type="text/javascript">
var bIsFirebugReady = (!!window.console && !!window.console.log);
$(document).ready(
function (){
$("#idPluginVersion").text($.Field.version);
setLimitSelection();
$('input[name="chkRange"]').createCheckboxRange(function(bChecked){
$("label[for=" + this.id + "]").css("background-color", (bChecked) ? "#ffffff" : "");
});
$("#frmNavigation").autoAdvance();
window.oSelector = $("#selector");
}
);

function setLimitSelection(){
$('input[name="chkLimit"]').limitSelection(
{
limit: 3,
onfailure: function (n){
$("#idCheckboxMsg").html(
"You can not select more than " + n + " items."
);
return false;
},
onsuccess: function (n){
$("#idCheckboxMsg").html("");
return false;
}
}
);
$('select[name="selLimit"]').limitSelection(2);
}
</script>

<title>test</title>

</head>
<body>
<form action="" method="post" id="frmCreateCheckboxRange" onsubmit="return false;">
<p>
<table>
<tr>
<td>
<input type="checkbox" name="chkRange" id="chkRange_1" value="1" />
</td>
<td>
<input type="checkbox" name="chkRange" id="chkRange_2" value="2" />
</td>
<td>
<input type="checkbox" name="chkRange" id="chkRange_3" value="3" />
</td>
</tr>
</table>
</p>
</form>
</body>
</html>
EOM
↑------------------------------

A 回答 (1件)

print <<EOM;


なので、$(の部分がグループIDに置換されます。
他にも置換される箇所があるかもしれません。

本当にこのソースの通り、変数置換が一切必要ないのであれば、
print <<'EOM';
に変更するだけで動くと思います。

変数置換が必要ならば、CGIが出力したHTMLをよくみて、
意図しない置換が起きているところをみつけて、地道にエスケープしていってください。

もしピンとこないようなら「perl ヒアドキュメント 変数展開」
および「perlvar」あたりでぐぐってみてください
    • good
    • 0
この回答へのお礼

ご回答誠にありがとうございます。

>print <<'EOM';
>に変更するだけで動くと思います。
ご指摘の通りでした。
うまくいきました。
勉強になりました。
本当にありがとうございました。
敬具

お礼日時:2010/06/28 08:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!