我一直在强调这个问题几个小时,我无法让它发挥作用。我没有javascript的经验,一直在论坛和其他网站上搜索,但我似乎无法找到一个有效的解决方案。
我正在尝试使用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
我正在尝试修改我拥有title =“zip search”的文本框并提交表单,但我的代码根本不起作用。它甚至不会填写文本框
NSString* javaScriptString = @"document.getElementById('data[Search][zip_code]').elements.value='22911';";
[self.webView stringByEvaluatingJavaScriptFromString: javaScriptString];
它什么也没做。我也尝试过GetElementsByName以及其他两种变体。
答案 0 :(得分: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:
)。
如果您的语法错误,至少在Mobile Safari中,您的语句将被忽略。如果您最终尝试获取不存在的内容,则会在警报中收到NULL消息。