javascript - Bootstrap Tooltip 动态值 取决于是否需要填写

标签 javascript jquery razor bootstrap-4

嗨,我快要撞到墙上了。

我正在尝试创建一个 javascript/jquery 事件来检测我的鼠标何时位于按钮上。当鼠标悬停在按钮上时,我想要一个工具提示,其中包含仍需要填写的输入中所需的消息。我希望它只是最后一条必需的消息,并且我希望消息能够更改,直到不再需要填写为止。

这是我到目前为止所尝试过的。

我的 Razor cshtml

...Irrelevant html code
 <div class="form-group form-group-sm col-sm-6">
                    <div class="row">
                        <div class="col-sm-1"></div>
                        <div class="col-sm-4">
                            @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "col-form-label col-md-12" })
                        </div>

                        <div class="col-sm-6">
                            @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control",title = Global.ToolTipName, data_toggle = "tooltip" } })
                            @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
                        </div>
                    </div>
                </div>
                  <div class="form-group form-group-sm col-sm-6">
                    <div class="row">
                        <div class="col-sm-1"></div>
                        <div class="col-sm-4">
                            @Html.LabelFor(model => model.Phone, htmlAttributes: new { @class = "col-form-label col-md-12" })
                        </div>
                        <div class="col-sm-6">
                            @Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control", title = Global.ToolTipPhone, data_toggle = "tooltip" } })
                            @Html.ValidationMessageFor(model => model.Phone, "", new { @class = "text-danger" })
                        </div>
                    </div>
                </div>
                 <div class="form-group form-group-sm col-sm-12">
                    <div class="row">
                        <div class="col-sm-12">
                            <input id="Send" type="submit" value="@Global.btnSend" title = "Not Implemented Yet!" data_toggle = "tooltip" class="btn btn-default" />
                        </div>
                    </div>
                </div>

...Irrelevant html code

我的脚本看起来像这样

   <script type="text/javascript">
   $(document).on('mouseenter', '#Send', function () {
           var allinput = $('input[data-val-required]').get();
           allinput.forEach(item => this.attr('data-original-title', item.title));//<--- tried this doesn't seem to work.
           //allinput.forEach(item => this.attr('data-original-title', item.title).tooltip('fixTitle').tooltip('show')); <--- and tried this didn't work either
           //allinput.forEach(item => this.attr('title', item.title).tooltip('fixTitle').tooltip('show'));<--- then I tried this didn't work either
           $(this).tooltip('show');
        });

        $(document).on('mouseleave', '#Send', function () {
            $(this).tooltip('hide');
        });
        </script>

所以我不知道我哪里出错了。指向正确方向的指针或在这里提供一点帮助将不胜感激,甚至告诉我我是否远离我的目标或非常接近也将被视为一个很大的帮助。

在 CodeThing 的帮助下,我制作了一个我想做的工作示例。

 $(document).on('mouseenter', '#Send', function () {
            var allinput = $('input[data-val-required]').get();
            var lastval = '';
            $.each(allinput, function () {
                if ($(this).val() == '') {
                    var forName = this.id;
                    var closestName = "label[for='" + forName + "']";
                    lastval += $(this.parentNode.parentNode).find(closestName).text() +", ";
                }
            });
            lastval = "Need to fill out these fields: " + lastval
            $(this).attr('title', lastval).tooltip('fixTitle').tooltip('show');
        });

        $(document).on('mouseleave', '#Send', function () {
            $(this).tooltip('hide');
        });

但是这仅适用于 Firefox。我真的需要这个也能在 Edge 和 Chrome 中工作。

最佳答案

在这种情况下,请尝试以下代码并向发送按钮添加 data-html="true"属性。它在发送按钮工具提示中的新行上显示所有空白字段工具提示。

$(document).on('mouseenter', '#Send', function () {
    var allinput = $('input[data-val-required]').get();
    var lastval = '';
    $.each(allinput, function() {
        if($(this).val() == '') lastval += $(this).attr('title')+'<br />';
    });
    $(this).attr('title', lastval).tooltip('fixTitle').tooltip('show');
});

$(document).on('mouseleave', '#Send', function () {
    $(this).tooltip('hide');
}); 

关于javascript - Bootstrap Tooltip 动态值 取决于是否需要填写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52091615/

相关文章:

javascript - 输入填充文本区域 - Javascript

css - 使用 Razor 将样式编程盟友添加到垂直导航菜单的问题

javascript - 响应 header 存在于浏览器中但未被 Angular $http response.headers() 解析

javascript - for-of 循​​环内具有多个参数的 ES6 数组销毁

javascript - 使用javascript更改表单字段值

javascript - 为什么我的自定义 Google map 图标显示在 pc 浏览器中,但不显示在 Android 浏览器中?

javascript - 使用 CoffeeScript 为选择框选择默认值

javascript - jQuery 和输入表单

c# - 如果字典键为可为空的十进制,则 Mvc SelectList 不绑定(bind)

javascript - MVC Ajax.BeginForm OnSuccess 函数未定义