js - 在拼接字符串中动态submit当前form

  今天在做一个项目的时候, mapabc中的inforWindow中,如果是超链接a,不直接响应.

  后来的解决方案是动态产生form,并调用summit方法.如下

  自定义一个js函数:

function subf(val) {
document.getElementById(val + 'frm').submit();
}

  在html中, 由于我发现在直接拼接字符串时, 如果有很多单引号和双引号同时使用,这时在拼接字符串的时候,会很麻烦.

  我的解决方案是, 传递当前控件的id, (如上)在获取控件的id时, 在添加新的内容,以区分控件id.

<form id='okok' name='okok' action='monitor/lock_fence_monitor'>
<input type='button' id='okok' onclick='subf(this.id);' />
</form>

这里, 使得form中的id和button的id相同, 是为了从变量中获取值的时候,方便使用.例如

"<form id='" + lid + "frm' name='canyou' action='monitor/lock_fence_monitor'>
<input type='button' value='" + lid + "' id='" + lid + "' onclick='subf(this.id);'/> </form>";

这样, form的id和button的id都是动态的.

相反,如果不使用 this关键字,如下:

<form id='ftest' name='ftest' action='monitor/lock_fence_monitor'>
<input type='button' id='okok' onclick="subf('bid');" />
</form>

这时在拼接字符串时的难度会很大(我觉得,可能大家觉得拼接字符串很容易).

真是困难重重, 后来发现inforWindow中如果直接提交,在Action中竟然无法接受到参数的值.

  后来的解决方案是,在以上的subf函数中,调用父窗口的另一个form,让父窗口中的form进行提交.

基本代码为:

  html中:

<form action="monitor/lock_fence_monitor" id='fparent'>
<input type="text" value="" id='name' name="name" /><br /> <input
type="submit" value="do" />
</form>

  js函数:

//提交infowindows.
function subf(val) {
//console.log('v=' + val);
var n = document.getElementById('name');
n.value = 'lll';
document.getElementById('fparent').submit();
}

  js中进行字符串拼接:

"<form id='"
+ lock
+ "frm' name='form_info' action='monitor/lock_fence_monitor?IMEI=jus'><ul><li><input name='IMEI' type='button' value='"
+ lock + "(点击查报警日志)编号'id='" + lock
+ "'onclick='subf(this.id);'/></li><li>回传间隔:" + returnInterval
+ "</li><li>上次开锁次数:" + previousOpenedTotalTimes
+ "</li><li>当前开锁次数:" + currentOpenedTotalTimes
+ "</li><li>上次状态:" + previousStatus + "</li><li>当前状态:"
+ currentStatus + "</li><li>上传原因:" + uploadReason
+ "</li><li>数据量:" + dataVloume + "</li><li>连接基站信息:"
+ connectStationInfo + "</li><li>经度:" + longitude
+ "</li><li>经度信息:" + longitudeInfo + "</li><li>纬度:" + latitude
+ "</li><li>纬度信息:" + latitudeInfo + "</li><li>位置:" + location
+ "</li><li>速度:" + speed + "</li><li>方向:" + direction
+ "</li></ul></form>";

  所以,流程,就是在动态的input(如button)中,通过onclick方法, 然后通过js函数,接受input的value,赋值给父窗口中的控件,让父窗口中的控件携带其值,并通过父窗口的form进行提交.

上一篇:不使用JavaScript让IE浏览器支持HTML5元素——张鑫旭


下一篇:Net::HTTP 一次添加 cookie, body 发送post请求