javascript – 具有当前表单值的innerHTML

需要.inner HTML功能,但使用当前表单字段值包括输入,选择(选定选项)和textarea.

所以,给定:

<form id=f>
  <input type=text name=x />
  <select name=y>
    <option value='1'>one</option>
    <option value='2'>two</option>
  </select>
</form>

如果用户输入123,并选择选项2,则正常的f.innerHTML返回:

<input type=text name=x />
<select name=y>
  <option value='1'>one</option>
  <option value='2'>two</option>
</select>

我希望f.magicInnerHTML返回:

<input type=text name=x value='123' />
<select name=y>
  <option value='1'>one</option>
  <option value='2' selected>two</option>
</select>

反映当前的形式值.

解决方法

我想这就是你要找的东西:
JSFiddle link

在此示例中,使用所有已更改的属性及其值警告表单的“magic”innerHTML.我使用了jquery getAttributes plugin.这是代码,而不是插件代码

function magicHTMLloop($el,s,notfirst){
    if (notfirst) {
        s += '<' + $el.get(0).tagName.toLowerCase();

        var attrs = $.getAttributes($el);

        for (var i in attrs){
            s += ' ' + i + '="' + $el.attr(i) + '"';
        }
        s += '>';
    }

    $el.children().each(function(){
        s += magicHTMLloop($(this),'',true);
    });

    if ($el.children().length && notfirst){
        s += '</' + $el.get(0).tagName + '>';
    }
    return s;
}

function magicHTML($el) {
    return magicHTMLloop($el,false);
}

// This is the example usage:

$('input').change(function(){
    var v = magicHTML($('form'));
    alert(v);
});

这有一些您可能想要考虑的边缘情况,例如值中的引号(这将导致无效的HTML) – 但我确信您可以自己逃避,如果有必要的话.如您所见,magicHTML函数输出是更新的innerHTML:

<input type="text" name="x" value="this is the changed value">

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...