【问题标题】:Set input[text] value according to radio button根据单选按钮设置输入[文本]值
【发布时间】:2018-01-09 16:10:02
【问题描述】:

我正在尝试设置与所选单选按钮对应的输入值,但我不知道如何设置。

<input type="text" class="input" name="provider" v-model="selected_provider">

<b-radio-group v-model="provider_options">
    <div class="field">

        <template v-for="provider in providers">
            <b-radio
                name="select_provider[]" id="provider_@{{ $index }}"
                model="selected_provider"
                value="provider"
                type="radio">
                @{{ provider.provider_name }}
            </b-radio>
        </template>

    </div>
</b-radio-group>

我设法获得了一个要显示的数组,并且输入显示了selected_provider 中写入的任何内容,但我只是不知道如何将它们链接在一起。

var app = new Vue({
    el: '#app',
        data: {
            selected_provider: '',
                providers: [
                    {
                        provider_name: 'Twitch',
                        provider_url: 'https://www.twitch.tv/'
                    },
                    {
                        provider_name: 'Smashcast',
                        provider_url: 'https://www.smashcast.tv/'
                    },
                    {
                        provider_name: 'AzubuFrost',
                        provider_url: 'https://www.smashcast.tv/'
                    }
                ]
            },
        });

另外我想附上价值

<input type="text" class="input" name="name" id="name">

provider_url 的末尾selected_provider

有人这么好心来帮助我吗?

【问题讨论】:

  • 选择 Twitch 后,您希望在 Stream URL(以及其他任何地方)中显示什么?

标签: laravel vue.js blade


【解决方案1】:

如果您将 for 循环设置为 v-for="(provider, index) in providers",您可以在 &lt;b-radio&gt;&lt;/b-radio&gt; 中放置一个 v-on:click="setSelectedProvider(index)",并可以创建如下所示的方法:

setSelectedProvider: function(index){
    this.$set(this, 'selected_provider', index);
}

每当单击单选按钮时,都会将 selected_provider 设置为单击的单选按钮的索引。

至于将其他输入的值附加到provider_url 的末尾,您可以创建一个方法来执行此操作:

updateProviderURL: function(event){ 
    this.$set(this.providers[this.selected_provider], 'provider_url', 
    'https://www.twitch.tv/' + event.currentTarget.value);
}

然后您可以为您的输入添加一个侦听器,如下所示:

v-on:input="updateProviderURL($event)"

最好在组件的数据部分中将selected_provider 默认设置为0,这样updateProviderURL 函数就不会尝试设置不存在的数组部分;)

【讨论】:

  • 感谢您的快速回复。你说的我已经实现了。出于某种原因,id="provider_@{{ $index }}" 没有转换为 id="provider_0"id="provider_1" 等。不幸的是,似乎没有什么能像它应该的那样工作 xD
  • 谢谢,这让我自己尝试一些东西更容易。我去看看
  • 您可以尝试的第一件事是将id="provider_@{{ $index }}"for="provider_@{{ $index }}" 替换为:id="'provider_' + index":for="'provider_' + index"。这解决了控制台中出现的一些错误。此外,我不确定它应该如何工作,所以请尝试并告诉我;)
  • 现在它创建了id="provider_0"jsfiddle.net/5w1t6xya/8 在 jsfiddle 上,它用索引填充输入,但不使用 provider_url
  • 设法让它填充provider_url。必须将v-on:click="setSelectedProvider(index)"更改为v-on:click="setSelectedProvider(provider.provider_url)",它似乎不适用于b-radio,但只能用于常规ìinput type="radio"`
猜你喜欢
  • 2017-04-04
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多