使用自定义选项 (data-) 属性的内容填充输入

Posted

技术标签:

【中文标题】使用自定义选项 (data-) 属性的内容填充输入【英文标题】:Populate an input with the contents of a custom option (data-) attribute 【发布时间】:2016-06-01 10:08:45 【问题描述】:

在下面的示例中,我尝试使用 option.data-foo 属性的内容填充输入。我感觉如此接近......但我在某个地方有一些从后到前的东西......有什么想法吗?


我的代码:

function updateText(type) 
    var id = type+'Text';
    document.getElementById(id).data-foo = document.getElementById(type).value;
<form id="example" name="example">
    <select id="sensor" onchange="updateText('sensor')">
        <option value="Jval" data-foo="Jfoo">Joption</option>
        <option value="Kval" data-foo="Kfoo">Koption</option>
    </select>

    <br />
    <input type="text" value="" id="sensorText" />
</form>

【问题讨论】:

【参考方案1】:

如果你使用的是 jQuery,那么使用这个:

$('#sensor').change(function() 
  $('#sensorText').val( $(this).find('option:selected').data('foo') )
)

$('#sensor').change(function() 
  $('#sensorText').val( $(this).find('option:selected').data('foo') )
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="example" name="example">
  <select id="sensor">
    <option value="Jval" data-foo="Jfoo">Joption</option>
    <option value="Kval" data-foo="Kfoo">Koption</option>
  </select>

  <br />
  <input type="text" value="" id="sensorText" />
</form>

【讨论】:

sn-p 在这里工作,但如果我在本地剪切并粘贴它,即使我用更新的版本更新 1.11.1/jquery.min.js 也不起作用。并且Web控制台未报告任何错误跨度> 【参考方案2】:

你想要的,大概是这个:

var selectField = document.getElementById('sensor');
var textField = document.getElementById('sensorText');
var updateTextField = function() 
    textField.setAttribute(
        'value',
        selectField.options[selectField.selectedIndex].dataset.foo
    );


// Populate your text field when loading your page
updateTextField();

// Update your text field when an option is selected
selectField.addEventListener('change', updateTextField);
<form id="example" name="example">
    <select id="sensor">
        <option value="Jval" data-foo="Jfoo">Joption</option>
        <option value="Kval" data-foo="Kfoo">Koption</option>
    </select>
    <br />
    <input type="text" value="" id="sensorText" />
</form>

(另见this Fiddle

【讨论】:

【参考方案3】:

你也可以这样解决

$("#sensor").on("change", function()
  var $selectedItem = $(this).find(":selected");
  var dataValue = $selectedItem.data("foo");
  $("#sensorText").val(dataValue);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="example" name="example">
    <select id="sensor">
        <option value="Jval" data-foo="Jfoo">Joption</option>
        <option value="Kval" data-foo="Kfoo">Koption</option>
    </select>

    <br />
    <input type="text" value="" id="sensorText" />
</form>

【讨论】:

【参考方案4】:

如果您使用的是 jquery:

var value = $('#elementId').attr('data-foo');

【讨论】:

此方法不适用于选择输入,因为您需要先找到所选属性,然后才能获取数据属性。检查接受的答案以获取示例。

以上是关于使用自定义选项 (data-) 属性的内容填充输入的主要内容,如果未能解决你的问题,请参考以下文章

使用带有选项卡布局的自定义视图时无法从选项卡中删除填充

使用来自不同 HTML 属性的项目填充数组

与 ScrollView 结合的自定义选项卡视图的问题

阻止 Chrome 显示自动填充选项

无法使用请求从 zillow 中抓取自定义属性链接

libreoffie输入数字时,却自动粘贴剪贴板的内容;怎么解决?