代码之家  ›  专栏  ›  技术社区  ›  Helbo

引导工具提示动态值取决于是否需要填写

  •  0
  • Helbo  · 技术社区  · 6 年前

    嗨,我把头撞到墙上了。

    我正在尝试创建一个javascript/jquery事件来检测我的鼠标何时在按钮上。当鼠标放在按钮上时,我需要一个工具提示,其中包含仍然需要填写的输入所需的消息。我只希望它是最后一个需要的信息,我希望信息改变,直到没有更多的需要填写。

    这就是我迄今为止所尝试的。

    ...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。我真的需要这个也工作在两个边缘和铬。

    1 回复  |  直到 6 年前
        1
  •  1
  •   CodeThing    6 年前

    在这种情况下,请尝试下面的代码并将data html=“true”属性添加到send按钮。它在“发送按钮”工具提示的新行上显示所有空白字段工具提示。

    $(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');
    });