【问题标题】:Focus on a textarea after custom text on a bootstrap floating modal form在引导浮动模式表单上的自定义文本之后关注文本区域
【发布时间】:2014-10-18 09:55:40
【问题描述】:

我正在使用引导程序来调用一个简单的模式表单,它只包含一个 textarea 字段和几个按钮。我在调用模态表单时在文本区域中设置了一些自定义文本(可变长度)。我想要的是专注于自定义文本之后的 textarea 字段,以便用户可以在此之后开始输入。我在下面提到了我的实现。谁能告诉我如何实现这一目标?

这里是小提琴:http://jsfiddle.net/jLymtdg8/

这里也有一点解释 -

这是我的模态(所有引导程序)-

<div class="modal fade" id="msg" 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"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
            <h4 class="modal-title" id="myModalLabel">Type a message</h4>
        </div>
        <div class="modal-body">
            <textarea id="Message" class="form-control"></textarea>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default btn-sm" data-dismiss="modal">Cancel</button>
            <button id="PostModalButton" class="btn btn-primary btn-sm">Post</button>
        </div>
    </div>
</div>

下面是它的调用方式 -

<div class="pull-right">
        <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#msg" data-screenname="Type after this">
            Post A Message
        </button>
</div>

这就是我预填充文本区域和设置焦点的方式,但这只是将光标设置在第一行而不是 screen_name 之后 -

$(this).on('shown.bs.modal', '#msg', setFieldAndFocus)

var setFieldAndFocus = function () {

    var screen_name = $("button[data-target='#msg']").data("screenname");
    $("#Message").val(screen_name + " ");
    $("#Message").focus();
};

【问题讨论】:

  • 请提供小提琴
  • 添加了小提琴链接。

标签: javascript jquery twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

Sam,你可以试试下面的 javascript 代码:-

    var screen_name = '',
    old_message = '',
    new_message = '';
    $("#msg").on('shown', function() {
        screen_name = $("button[data-target='#msg']").data("screenname"),
        old_message = $.trim($('#Message').val()),
        new_message = ( old_message.length == 0 ) ? screen_name : old_message; 
       $("#Message").focus().val(new_message + " "); 
   });

让我解释一下我为什么使用这个代码。从您提供的 js fiddle 链接中,我了解您使用的是 bootstrap 2 版本,但您使用的代码是

$("#msg").on('shown.bs.modal', function(){
  ...
}

仅在引导程序 3 中引入。所以我将其更改为

$("#msg").on('shown', function(){
...
}

和线

$("#Message").focus().val(new_message + " ");

用于在自定义文本之后设置焦点。希望这能解决您的问题。

【讨论】:

  • 我错误地将引导程序 2 包含在小提琴中,但我在代码中正确使用了它。实际上,我自己尝试了类似的方法,即先设置焦点,然后设置值,它对我有用。只是我不知道该怎么做。无论如何,感谢您的发布。
【解决方案2】:

您可以参考这个链接:http://jsfiddle.net/3kgbG/433/ 它对我有用。

$('.launchConfirm').on('click', function (e) {
    $('#confirm')
        .modal({ backdrop: 'static', keyboard: false })
        .on('')
        .one('click', '[data-value]', function (e) {
            if($(this).data('value')) {
                //alert('confirmed');
            } else {
                //alert('canceled');
            }
        });
});

$('#confirm').on('shown', function () {
    $('#txtDemo').val($('#txtDemo').val());
    $('#txtDemo').focus();
  // do something…
})
body,
.modal-open .page-container,
.modal-open .page-container .navbar-fixed-top,
.modal-open .modal-container {
	overflow-y: scroll;
}

@media (max-width: 979px) {
	.modal-open .page-container .navbar-fixed-top{
		overflow-y: visible;
	}
}
<div class="page-container">
    <div class="container">
        <br />
        <button class="btn launchConfirm">Launch Confirm</button>
    </div>
</div>

<div id="confirm" class="modal hide fade">
  <div class="modal-body">
    Do you want to continue?
      <input id="txtDemo" type="text" value="Jayesh" class="form-control"/>
  </div>
  <div class="modal-footer">
    <button type="button" data-dismiss="modal" class="btn btn-primary" data-value="1">Continue</button>
    <button type="button" data-dismiss="modal" class="btn" data-value="0">Cancel</button>
  </div>
</div>

【讨论】:

  • 好吧,除了将点击事件连接到启动按钮之外,我几乎在做同样的事情(引导程序负责这个)。不确定这是否是这里的问题。
  • Click 事件是模式中按钮的侦听器,因此如果您想消除,则可以。请采纳答案
  • 你只提到了一些类似的代码工作正常,并没有解决我的问题。
  • 山姆,你可以试试我的代码,看看能不能解决你的问题。
猜你喜欢
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 2014-01-17
  • 2020-01-19
  • 1970-01-01
  • 2017-12-24
  • 2012-07-23
  • 2023-04-08
相关资源
最近更新 更多