Jquery UI 对话可访问性(屏幕阅读器)问题

Posted

技术标签:

【中文标题】Jquery UI 对话可访问性(屏幕阅读器)问题【英文标题】:Jquery UI dialogue accessibility (screen reader) issue 【发布时间】:2017-08-17 15:55:48 【问题描述】:

我有一个简单的 jquery ui 对话框,如下所示:

<div class="error" id="errorMsg" role="dialog" > </div>

我在下面有一个登录表单,我使用这个id="errorMsg" 来显示一个弹出窗口。

 function alertDialogue(output_msg, title_msg) 	
        if (!title_msg)
            title_msg = 'Error';
    
        if (!output_msg)
            output_msg = 'No Message to Display.';    
    
        $("#errorMsg").html(output_msg).dialog(
            title: title_msg,
            resizable: false,
            modal: true,
    
            buttons: 
                "Ok": function() 
                
                	dialogueON = 0;
                    $( this ).dialog( "close" );
                
            
        );    
    

当弹出窗口显示时,它只是读出 Ok 按钮。我希望屏幕阅读器能够阅读错误标题、错误消息和存在的按钮。

【问题讨论】:

【参考方案1】:

我没有发现您的代码有任何初始问题。我在这里测试过:https://jsfiddle.net/Twisty/avw0r0yd/

HTML

<form id="loginForm">
  <ul>
    <li>
      <label>User:</label>
      <input id="user" type="text">
    </li>
    <li>
      <label>Pass:</label>
      <input id="pass" type="password">
    </li>
  </ul>
  <button id="submitBtn" type="submit">
    Login
  </button>
</form>

<div class="error" id="errorMsg" role="dialog"> </div>

CSS

form ul 
  padding: 0;
  margin: 0;
  list-style: none;


form ul li label 
  display: inline-block;
  width: 75px;

JavaScript

function alertDialogue(output_msg, title_msg) 
  console.log("Alert, " + title_msg + ": " + output_msg);
  if (!title_msg)
    title_msg = 'Error';

  if (!output_msg)
    output_msg = 'No Message to Display.';

  $("#errorMsg").html(output_msg).dialog(
    title: title_msg,
    resizable: false,
    modal: true,

    buttons: 
      "Ok": function() 
        dialogueON = 0;
        $(this).dialog("close");
      
    
  );


$(function() 
  $("#loginForm").submit(function(e) 
    e.preventDefault();
    console.log("Form submitted.");
    var user = $("#user"),
      pass = $("#pass");
    if (user.val().length === 0 || pass.val().length === 0) 
      alertDialogue("User or Pass Missing!", "Login Error");
      return false;
    
  );
);

这似乎与 jQuery 3.1.1 和 jQuery UI 1.12.1 一样工作。我会检查你的浏览器控制台,看看那里是否有错误。 dialogueON 在本例中未定义。

【讨论】:

它按预期工作。我在可访问性(屏幕阅读器)方面遇到问题。你检查了吗? @abhilashk 不,我没有。你从来没有在你的帖子中提到过。请用更完整的问题澄清或更新您的帖子,也许包括复制问题的步骤。

以上是关于Jquery UI 对话可访问性(屏幕阅读器)问题的主要内容,如果未能解决你的问题,请参考以下文章

在屏幕阅读器中暂停以获取可访问性

Jquery 和 WAI ARIA

加载数据时的可访问性

使用固定位置时,jQuery UI 对话框离开屏幕

jQuery UI 对话框/拖动问题

Jquery在可访问的多步骤表单上验证