1

アプリケーションにオートコンプリート入力フィールドがあります。このオートコンプリート入力フィールドを含む jsp を開くと'names' is undefined、行にエラーが発生します<body onload="getNames(names)">。これは、IE8、7、9 でのみ発生します。Chrome と Firefox ではすべて問題ありません。コントローラーで、ユーザーの名前と姓を取得し、それらを で区切られた 1 つの文字列に書き込み、その文字列を jsp$に送信します。allUsersRoleUserACメソッド getNames(names) はその文字列を分割し、それらを var に入れますtags

jspコードは次のとおりです。

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Admin page</title>

<link rel="stylesheet" type="text/css" href="<%=response.encodeURL(request.getContextPath() + "/css/jquery-ui.css") %>" />
<link rel="Stylesheet" type="text/css" href="<%=response.encodeURL(request.getContextPath() + "/css/DOMAlert.css") %>" media="screen" />
<script type="text/javascript" src="<%=response.encodeURL(request.getContextPath() + "/JavaScript/DOMAlert.js") %>"></script>
<script type="text/javascript" src="<%=response.encodeURL(request.getContextPath() + "/JavaScript/jquery-1.8.2.js") %>"></script>
<script type="text/javascript" src="<%=response.encodeURL(request.getContextPath() + "/JavaScript/jquery-ui.js") %>"></script>
<script type="text/javascript">

var tags = new Array();
function getNames(names){
    tags = names.value.split('$');
}

</script>

</head>
<body onload="getNames(names)" >

    <form action="<%=response.encodeURL(request.getContextPath() + "/admin/deleteUser.html") %>" method="post">
        <input id="names" type="hidden" value="${ requestScope['allUsersRoleUserAC'] }" />
        <input name="korisnik" class="userSelectDeleteUser" value="ime prezime" onclick="this.value=''" id="autocomplete" />
        <input class="izbrisiKorisnikaButtonPosition" id="buttonRightPart" type="button" value="Izbriši" />
    </form>

    <script type="text/javascript">
        $( "#autocomplete" ).autocomplete({
            source: function( request, response ) {
                var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
                response( $.grep( tags, function( item ){
                    return matcher.test( item );
                }) );
            }
        });
    </script>

</body>
</html>
4

3 に答える 3

4
onload="getNames(names)"

世界はnames何ですか?要素を参照するには、getElementById を使用する必要があります。ID で要素を直接参照しないでください。

onload="getNames(document.getElementById('names'));"
于 2013-06-10T13:55:36.800 に答える
1

names実際には未定義です。他のブラウザは未定義の値を渡すだけですが、IE ではそれができません。

要素を取得したい場合は、names使用できます

document.getElementById('names')

ただし、ロジックをマークアップから分離するために、パラメーターとして渡すのではなく、onLoad 関数内に配置することをお勧めします。

于 2013-06-10T13:57:11.440 に答える
1

onload="getNames($("#names").val())"

または非 jQuery

onload="getNames(document.getElementById('names').value)"

于 2013-06-10T13:58:29.560 に答える