【问题标题】:Passing data to input tag in bootstrap modal在引导模式中将数据传递给输入标签
【发布时间】:2017-04-01 15:05:42
【问题描述】:

我在一个 J2EE 项目中工作,遇到了一个毁了我生活的问题:v 我已经使用过引导程序,并且我已经使用引导程序模式并将数据传递给模式,但是这一次,当我使用相同的代码时,它不起作用。

PS:在 sn-p 中它可以工作,这意味着代码是正确的,但在我的项目中它没有。这是什么意思。

$(".modal-link").click(function() {
  $("#descr").attr('value', $(this).attr('descr'));
  $($(this).attr('href')).modal('show');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>

<div class='modal small fade' id='myModal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel' aria-hidden='true'>
  <div class='modal-dialog'>
    <div class='modal-content'>
      <div class='modal-header'>
        <button type='button' class='close' data-dismiss='modal' aria-hidden='true'>×</button>
        <h3 id='myModalLabel'>Detail</h3>
      </div>
      <div class='modal-body' id="Details">
        <input id="descr" name="descr" value="" />
      </div>
      <div class='modal-footer'>
        <button class='btn btn-default' data-dismiss='modal' aria-hidden='true'>Fermer</button>
      </div>
    </div>
  </div>
</div>

<div class="row">
  <c:forEach items='${liste}' var='p'>
    <div class="col-sm-6 col-md-4">
      <div class="media services-wrap wow fadeInDown">
        <div class="pull-left">

        </div>
        <div class="media-body">
          <h3 class="media-heading">${p.getMarque()}</h3>
          <p id="des">${p.getDescr()}</p>
        </div>
        <a href="#myModal" class="modal-link" var descr="${p.getDescr()}" role='button' data-toggle='modal'>
          <i class="glyphicon glyphicon-eye-open">View</i>
        </a>
      </div>
    </div>
  </c:forEach>
</div>

【问题讨论】:

  • ${p.getDescr()} 替换为 ${p.descr} 并尝试一下。描述您的私有属性。和 ${p.marque}
  • @Gurkan Yesilyurt 问题不存在。 ${p.getDescr()} 和 ${p.marque} 显示没有任何问题。我的问题出在模态中。我将 ${p.getDescr()} 的值传递到一个名为 descr 的变量中,然后尝试将其值放入模态中的输入标签,其 id 为“descr”,无法分配!我已经使用相同的代码了,没有问题,我现在不知道出了什么问题!
  • 它只在 sn-p 中工作一次。您的服务器也是如此。它设置了一次值,然后它将不再起作用。当您打开模式时,它的值设置正确,尝试更改它的输入值并重新打开它。即使再次调用attr() 方法,该值也不会改变。
  • 在sn-p中它只工作一次,在我的项目中它根本不起作用
  • @Bashir 你还在用不正确的方法,你是不是把attr()改成prop()再试一次?

标签: javascript jquery twitter-bootstrap bootstrap-modal


【解决方案1】:

您错误地使用了attr() 方法。使用prop()

$(".modal-link").click(function() {
  $("#descr").prop('value', $(this).attr('descr'));
  $($(this).attr('href')).modal('show');
});

attr() 上阅读更多信息。最重要的部分是:

尽管如此,关于检查的最重要的概念是要记住 属性是它不对应于选中的属性。这 属性实际上对应于 defaultChecked 属性和 应该只用于设置复选框的初始值。这 选中的属性值不随状态改变 复选框,而选中的属性确实如此。因此, 确定是否选中复选框的跨浏览器兼容方法是 使用属性

其他动态属性也是如此,例如 selected 和 value。

换句话说,attr() 方法仅更改属性的默认值(在这种情况下为值)。如果您更改输入value 并尝试使用attr() 方法来更改它,它将不起作用,因为默认值!= 当前值。要更改当前值,您必须使用 prop()val() 方法。

【讨论】:

    【解决方案2】:

    编辑:别介意我的帖子。您已经发现问题不在于您的 javascript 或标记。

    您的代码似乎运行良好,因此问题显然出在其他地方。 我只取出了 foreach 循环和变量,并对描述进行了硬编码。根据按下的链接,模式内的输入会填充不同的描述。顺便说一句,您不需要使用 .show() 显式打开模式。

    $(".modal-link").click(function() {
    
      $("#descr").attr("value", $(this).attr('descr'));
      //$($(this).attr('href')).modal('show');
    
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    
    
    
    <div class='modal small fade' id='myModal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel' aria-hidden='true'>
      <div class='modal-dialog'>
        <div class='modal-content'>
          <div class='modal-header'>
            <button type='button' class='close' data-dismiss='modal' aria-hidden='true'>×</button>
            <h3 id='myModalLabel'>Detail</h3>
          </div>
          <div class='modal-body' id="Details">
            <input id="descr" name="descr" value="" />
          </div>
          <div class='modal-footer'>
            <button class='btn btn-default' data-dismiss='modal' aria-hidden='true'>Fermer</button>
    
          </div>
        </div>
      </div>
    </div>
    
    <div class="row">
      <div class="col-sm-6 col-md-4">
        <div class="media services-wrap wow fadeInDown">
          <div class="pull-left">
    
          </div>
          <div class="media-body">
    
          </div>
          <a href="#myModal" class="modal-link" var descr="Description 1" role='button' data-toggle='modal'>
            <i class="glyphicon glyphicon-eye-open">View</i>
          </a>
        </div>
      </div>
    <div class="col-sm-6 col-md-4">
        <div class="media services-wrap wow fadeInDown">
          <div class="pull-left">
    
          </div>
          <div class="media-body">
    
          </div>
          <a href="#myModal" class="modal-link" var descr="Description 2" role='button' data-toggle='modal'>
            <i class="glyphicon glyphicon-eye-open">View</i>
          </a>
        </div>
      </div>
    
    </div>

    【讨论】:

    • 我想我还有一个问题,我仍然不知道它是什么,因为我的代码在其他项目中运行良好,当我在这里运行代码 sn-p 时也运行良好,我补充说你回答(没有foreach),当你的代码正确时它仍然不起作用..我迷路了!
    • 您的 sn-p 不工作。打开模式,更改其输入内容并重新打开它。输入内容将停止变化。 attr() 方法在这里用错了。
    猜你喜欢
    • 2013-07-21
    • 2016-01-22
    • 1970-01-01
    • 2014-12-12
    • 2017-12-31
    • 2017-08-23
    • 2014-11-13
    • 1970-01-01
    相关资源
    最近更新 更多