【问题标题】:Clear text area on radio button click and get text instead of value jquery清除单选按钮上的文本区域单击并获取文本而不是值 jquery
【发布时间】:2017-05-09 05:52:14
【问题描述】:

在这里我可以清除数据,但是当我从其他单选按钮推送值时,它会再次加载我不想要的以前的数据。

我希望 textarea 数据应该在单选按钮单击时永久清除,并且不应与任何其他数据一起加载。

这是我的代码

    <div class="portlet-body">
@foreach($students as $student)
    <div>
        <input type="radio" value="{{$student->id}}" name="student_lists[]" onclick="getdata( {{ $student->id }} )"/>
        {{$lists->name}}
        <span></span>
    </div>
    <div id="students-data"></div>
@endforeach
</div>

脚本

    <script>
function getdata(id)
{
    $('#textbx').val(null);
    $.ajax({
        url: '/students/'+id,
        type: "POST",
        success: function (data) {
        $('#students-data').html(data);
        }
    });
}

获取 HTML 的控制器方法

public function loadData($id)
{
  $students = DB::table('students')->select('name' , 'id')->where('user_id' , $id)->get();
  $data = '';
    $data .= '<div class="form-group">
                      <label class="control-label col-md-1">
                      </label>
                      <div class="col-md-8">
                          <label class="">';
                          foreach ($students as $student) {
                              $data .= "<input type='checkbox' class='chkbx' name='custom' onclick='push()' value='{$student->name}'/> {$student->name}
                                <span></span>";
                              }
                 $data .='</label>
                      </div>
                  </div>';
              return $data;
  }

将数据推送到文本区域的脚本

<script>
    function push()
    {
    $checks = $(".chkbx:checkbox");
    $checks.on('change', function() {
        var data = $checks.filter(":checked").map(function(i,v){
            return this.value;
        }).get().join("\n");

        $('#textbx').val(data);
    });
    }
</script>

我推送值的文本区域

<textarea name="fields" id="textbx" class="form-control" rows="8" ></textarea>

请帮助我如何硬重置 textarea 值。

【问题讨论】:

  • 我在您的代码中没有看到任何文本区域
  • 对不起,我现在更新它
  • 如何将值推送到该文本区域?
  • 我使用上面的onclick方法将数据推送到文本框中
  • 好的,你想从哪里重置文本区域?

标签: javascript jquery html


【解决方案1】:

删除推送功能,保留更改事件并委托它,以便您可以在动态添加的元素上触发代码,选择与您点击的 checkobx 相关的复选框

   $(function(){
        $('body').on('change',".chkbx:checkbox", function() {
            var data = $(this).parent().find(':checkbox:checked').map(function(i,v){
                return $(v).val();
            }).get().join("\n");

            $('#textbx').val(data);
        });
   });

如果您将 student->id 作为值并希望将 student->name 附加到 textarea,那么您需要按如下方式更改 html

为学生姓名添加一个名为 data-name 的自定义属性

 $data .= "<input type='checkbox' class='chkbx' name='custom' data-name=' {$student->name}' value='{$student->name}'/> {$student->name}
                                <span></span>";

以及要返回的js映射:

return $(v).attr('data-id');

【讨论】:

  • 亲爱的它使用值,但我不想推送值我需要推送来自 {$student->name} 的文本......如何处理文本而不是返回这个。价值; ....谢谢,请更新答案
  • 不,亲爱的,这不是问题... $data .= "&lt;input type='checkbox' class='chkbx' name='custom' value='{$student-&gt;id}'/&gt; {$student-&gt;name} &lt;span&gt;&lt;/span&gt;"; ..... 在这段代码中,我们返回的学生值意味着 id '{$student->id}' 但我希望名称为在代码行“{$student->name}”的末尾...
  • 可能是返回 this.text;但它不工作
  • 从我在问题中看到的$data .= "&lt;input type='checkbox' class='chkbx' name='custom' onclick='push()' value='{$student-&gt;name}'/&gt; {$student-&gt;name} &lt;span&gt;&lt;/span&gt;"; 值是$student-&gt;name 不是学生证
  • 先生,将学生 ID '$student->id' 保存在数据库中,但我想显示学生姓名
【解决方案2】:

在循环语句开始之前,将学生数据变量初始化为 0 或 null。 您要显示的所有变量都应初始化为 0 或 NULL,以便每次调用函数时首先将值设置为 null,然后 for 循环存储其值。

【讨论】:

    猜你喜欢
    • 2015-09-24
    • 1970-01-01
    • 2014-02-27
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多