2012-03-15 5 views
0

私は数時間このことを強調しており、私はそれを働かせることができません。私はjavascriptでの経験がなく、フォーラムや他のサイトで検索していますが、うまくいくソリューションを手に入れることができません。フォームが配置されている場所Objective CはJavascriptをAutoFill Webページに実行しています。

私はXcodeの

でのWebViewを使用してフォームに記入するウェブサイトhttp://www.eatwellguide.org/mobile/をしようとしていますです。

ウェブサイトは、私がタイトル=「郵便番号検索」を持っているテキストボックスを変更し、フォームを送信しようとしています

   <form name="data[Search][form]" METHOD="post" ACTION="/search/advanced/find" ID="frmAS" > 
       <ul> 
        <li><input type="hidden" name="device" id="device" value="mobile" title="mobile"> 
         <input type="hidden" name="iframe" id="iframe" value="11" title="mobile" > Keyword: </li> 
        <li><input type="text" name="data[Search][keyword]" id="SearchKeyword" title="search by keywords" /> 
         <input ID="SearchSubmit" class="BTNsend" type="submit" value="Find" name="data[Search][submit]"/></li> 
        <li>Zip/Postal Code:</li> 
        <li><input type="text" title="Zip search" value="" name="data[Search][zip_code]" /> <input ID="SearchSubmit" class="BTNsend" type="submit" value="Find" name="data[Search][submit]"/> </li> 
        <li><select name="data[Search][distance]" style="font-size:120%; "> 
         <option value="1">1</option> 
         <option value="5" selected="">5</option> 
         <option value="10">10</option> 
         <optionvalue="20">20</option> 
         <option value="50">50</option> 
         <option value="100">100</option> 
         <option value="200">200</option> 
         </select> <input type="radio" ID="SearchDistanceUnit" value="Mi" checked="" name="data[Search][distance_unit]" class="BTNradio"/> Mi 

このフォーラムを持っていますが、私のコードは全く動作しません。テキストボックスにも塗りつぶされません

NSString* javaScriptString = @"document.getElementById('data[Search][zip_code]').elements.value='22911';"; 



[self.webView stringByEvaluatingJavaScriptFromString: javaScriptString]; 

これは何もしません。私はまた、GetElementsByNameと2つの他の多くのバリエーションを試しました。

答えて

0

ブラウザはJavaScriptの入力をURLバーに直接サポートします。あなたがにリンクページをロードするのであれば、次のURLを入力します。

javascript:alert(document.getElementsByName('data[Search][zip_code]')) 

あなたが発見されたものを示す警告メッセージが表示されます。その場合、私はあなたのgetElementByNameを取って修正しました。要素は複数でなければならず、配列を返します。

アップの構築:

javascript:alert(document.getElementsByName('data[Search][zip_code]')[0]) 

は、入力要素を表示するように評価します。その後:

javascript:alert(document.getElementsByName('data[Search][zip_code]')[0].value) 

は、現在の値を表示し、そして:

javascript:document.getElementsByName('data[Search][zip_code]')[0].value = '22911' 

ボックスを移入します。だからそれはあなたが望む文字列(マイナスjavascript:)です。

あなたが構文上間違った方向に向いている場合は、少なくともモバイルSafariでは、このステートメントは無視されます。そこにないものを取得しようとすると、アラートでNULLメッセージを受け取ることになります。

+0

Tommy you rock!助けてくれてありがとう。フォームを提出するにはどうすればいいですか? – Alan

+0

それは分かりませんでした。再度、感謝します! – Alan

関連する問題