2011-09-12 11 views
1

私はアドレスをカプセル化するアドレスユーザーコントロールを持っています。あなたが期待する通常のアドレスフィールドを持っています。 Safariのオートフィルが完全に完全に壊れているように見えるため、Safariを使用しているユーザーがサイトにアクセスしたときにエラーが発生しました。Safariのオートフィルバグが最大長を無視する

これは、サーバーへの(ほぼ)実際のポストデータの一例である:

VictimAddressPanelの$アドレス$ CityNameItem $ txtCityName 123フェイクストリート

VictimAddressPanelの$アドレス$ ZipCodeItem $ txtZipCode 123フェイク・ストリート

外部のコンテナにSafariがOHとなる単語「アドレス」が含まれているために、このように見えます。ああ!!!それが通りの住所です。したがって、ZIPコードを含むすべてのアドレスフィールドにユーザーの住所が表示されます。さて、私はまた、オートコンプリートのASP.NETのテキストボックス属性を指定し、 "無効"に設定します。これは、ブラウザには、ちょっとダミーですが、このフィールドを埋めるようにはしないでください。 Safariはそれを無視します。そして最後に、本当に傷害に侮辱を加えるために、Safariはテキストボックスのmaxlengthプロパティも無視します。フィールドの最大長が2であるといっても、オートコンプリート情報に100文字が含まれていると、Safariはそのフィールドに100文字を自動的に入力します。想像されるように、フィールド長が長すぎるため、データベース例外がスローされます。誰もこれを見たことがありますか?回避策はありますか?

+0

Safariが最大長を無視しないようにする方法はありますか? –

答えて

0

これは不都合な問題です。これを防ぐには、単に名前を変更して$Address部分を取り除くのが最も簡単です。そうでなければ、いくつかの選択肢があります。

オプション1 - 妥当性検査妥当性検査を制限することができます。例

<asp:TextBox ID="Zip" runat="server" MaxLength="5"></asp:TextBox> 

<asp:RegularExpressionValidator ID="ZipVerify" runat="server" 
    ControlToValidate="Zip" 
    ErrorMessage="You may only have five characters in the zipcode." 
    ValidationExpression="(\s|){0,5}$"> 
</asp:RegularExpressionValidator> 

オプション2の場合 - クライアント側また、火災には、物事を停止するために提出するJavaScriptの検証に追加することができます。 jQuery以下

$(document).ready(function() { 
    $('form').submit(function() { 
     // Verify your fields here 
     if ($("Zip").length > 5) { 
      //Do something here on error. 
     } 
    });  
});