2

私は、MVCアクションに送信する必要がある3つのフィールドを持つ非常に単純なフォームを持っています。フォームはapplication/x-www-form-urlencodedである必要があります。ただし、フィールドの1つは、すでにurlencodedされた値をコピーして貼り付けるユーザーによって入力されます。フォームを送信する前に、その値をデコードしたいと思います。これは本当に簡単に思えますが、私はjavascriptで問題にぶつかり続けています。

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

   <html>
    <head>
<script>
function decodeURI()
{
decodeURIComponent(document.createprofile.URI.value);
}
</script>
    <title>Test Create</title>
    </head>
    <body>
    <center>
    <h1> Spoof Profile Calls </h1>
    <hr>
    <div style="border: 1px solid black; width: 300px;">
    <b>Create</b>
    <form method="post" action="https://test.test-lab.com/Profile/Create/" name="createprofile">
    <input type="hidden" name="ReturnURL" value="self.close()">
    UserName: <input type="text" name="UserName"><br />
    Client: <input type="text" name="Client"><br />
    URI: <input type="text" name="URI" onblur="decodeURI();"><br />
    <input type="submit" formenctype="application/x-www-form-urlencoded" value="Go To - Create"><br />
    </form>
    </div>
    </body>
    </html>

URIフィールドは、再エンコードされて破損するため、送信前にURLをデコードする必要があるフィールドです。これらの値を自分でエンコード解除するようにユーザーに依頼することもできますが、それらはそれほど洗練されたユーザーではなく、おそらく発生しないでしょう。

前もって感謝します!

失敗したコードで更新されました

4

1 に答える 1

2

行を置き換えます

URI: <input type="text" name="URI" onblur="decodeURI();"><br />

URI: <input type="text" name="URI" onchange="decodeURI(this);"><br />

そして、次のようなことをします

function decodeURI(elm) {
    elm.value = 'foo ' + elm.value + ' bar';
    return false;
}
于 2012-12-04T05:16:46.637 に答える