3

以下のように、特殊文字を含む可能性のある文字列をJavascript関数に渡す必要があります。

function setEditMode(countryName, countryCode)
{
    document.getElementById("txtCountryName").value=countryName;
    document.getElementById("txtCountryCode").value=countryCode;        
}

<input id="txtCountryName" name="txtCountryName" type="text" maxlength="50"/><br/>

<input id="txtCountryCode" name="txtCountryCode" type="text" maxlength="2"/><br/>               

<input type="button" value="Submit" id="btnEdit" name="btnEdit" onclick="setEditMode('&#039;xx&#039; &#034;yy&#034; # $', '&#034;&#039;');" />

setEditMode()ボタンがクリックされると、特殊文字を含む文字列型の2つのパラメーターをJavascript関数に指定する必要があります。文字列はエスケープする必要があります。この機能を使ってみましescape()たが、うまくいきませんでした。そのようなパラメーターを関数に渡す方法はありますか?(私はJSPを扱っています)。

setEditMode()[関数のこれらのパラメーターはそれぞれ'xx' "yy" # $とに対応し"' ます]。

4

1 に答える 1

2

サンプルに表示するパラメーターには、htmlエンティティが含まれています。それらをデコードしようとしていますか?これを行うためのネイティブメソッドはJavascriptにはありませんが、次のコードスニペットを使用できます(jQueryが必要です)。

 $("<div>").html("&#034;").html();

あなたの場合:

 var countryName = $("<div>").html(countryName).html();
 var countryCode = $("<div>").html(countryCode).html();

または、ジェネリック関数を使用します。

function decodeHtmlEntities(value)
{
   return $("<div>").html(value).html();
}

function setEditMode(countryName, countryCode)
{
    document.getElementById("txtCountryName").value=decodeHtmlEntities(countryName);
    document.getElementById("txtCountryCode").value=decodeHtmlEntities(countryCode);        
}

または 、jQueryを使用してdivタグを作成する気がない場合は、次の関数を使用してください:http: //phpjs.org/functions/html_entity_decode :424。

編集:あなたのコメントに基づいています。インラインスクリプトのエンティティに問題があるよう"です。'次のようなメソッドを呼び出すことで解決できます。

<input type="button" value="Submit" id="btnEdit" name="btnEdit" onclick="setEditModeWrapper()" />
<script type="text/javascript">
    function setEditModeWrapper()
    {
        setEditMode('&#039;xx&#039; &#034;yy&#034; # $', '&#034;&#039;');
    }
</script>   

また、入力フィールドでこれらの'をデコードする場合は、このソリューションを上記のデコード関数と組み合わせます。

またはもっと上品:

<input type="button" value="Submit" class="submitBtn" id="btnEdit" name="btnEdit" data-countryname="&#039;xx&#039; &#034;yy&#034; # $" data-countrycode="&#034;&#039;" />

<script tyoe="text/javascript">
$(".submitBtn").on("click", function(e)
{
    var btn = $(e.currentTarget);
    var countryName = btn.attr("data-countryname");
    var countryCode = btn.attr("data-countrycode");
    setEditMode(countryName, countryCode);
});
</script>

スクリプトタグをページの下部に配置すると、data-countryname属性とdata-countrycode属性に基づいてすべての送信ボタンが処理されます。onclickハンドラーでデータをレンダリングするのと同じ方法でそれらをレンダリングします。

于 2012-07-29T01:32:40.660 に答える