【问题标题】:HTML dropdown only display labelHTML 下拉列表仅显示标签
【发布时间】:2020-07-17 08:11:27
【问题描述】:

我想创建一个带有搜索栏的下拉列表,您可以在其中键入字符串并选择一个字符串,但该字段的值是一个数字(不可见)。

但是,我尝试过的所有操作都会导致数字和字符串都显示出来。 我怎样才能解决这个问题? 这是列表的 HTML。

<tr>
  <td>
    <label>Owner:</label>
  </td>
  <td><input #owner type="text" name="owners" list="owners"></td>
  <datalist id="owners">
        <option *ngFor="let ownerElem in owners" value="{{ownerElem.id}}" label="{{ownerElem.name}}"/>
      </datalist>
</tr>

这就是它的样子

在选择值时,我必须更改哪些数字以使数字不显示并且也不填写在文本字段中?

【问题讨论】:

    标签: html angular option html-input


    【解决方案1】:

    当使用“选项”时,“值”就是要显示的内容。

    试试这个方法。

    <option *ngFor="let ownerElem in owners" (change)="selectOwnerElem(ownerElem)">{{ownerElem.name}}</option>
    

    您应该创建一个函数“selectOwnerElem”,该函数将在选择选项时执行逻辑。

    【讨论】:

    • 谢谢。不过看起来是一样的。我试过这个: 和这个 看起来都一样
    • 使用我编写的代码,您不应该在 HTML 中获得值。有什么问题?
    • 我不知道是不是因为我使用的是 chrome?
    【解决方案2】:

    请试试这个。

    <option 
    *ngFor="let ownerElem in owners" 
    (change)="selectedOwnre($event)"
    [value]=ownerElem.id >
    {{ ownerElem.name }}
    </option>
    

    ts 文件

    selectedOwnre(event){
     console.log(event)
    }
    

    【讨论】:

    • 使用这种方法,您可以将名称显示为选项,并在选择名称时获取相应选项的 id。
    • 谢谢。它看起来仍然一样,但它总是显示两者。难道是因为我用的是chrome?
    • 我认为使用 chrome 没有问题,它应该可以工作,请尝试简单地复制粘贴我的代码。
    • 我复制粘贴了。选择时它没有打印任何东西。然后我添加了未打印的“console.log('event')”。
    猜你喜欢
    • 2016-01-28
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多