我在Qualtrics调查中实现了自动完成功能。当用户键入文本框时,将显示包含用户输入文本的项目列表。用户可以选择使用此列表中的项目填充文本框。
但是,当我从列表中选择时,我输入的文本会显示在响应数据中而不是选择中。例如,我输入" A"并选择" Apple。" "苹果"出现在调查文本框中,但是" A"记录在数据中。如果继续编辑输入的文本,则文本框中显示的内容将记录在数据中。但是,我不希望调查对象在他们选择答案后编辑文本。这是Internet Explorer和Chrome中的一个问题。 "苹果"当我使用Firefox回答调查时,会出现在数据中。
我使用了上一个问题的解决方案:Unsolved - Adding Autocomplete with Javascript to Qualtrics,但出现了同样的问题(以及其他问题)。
这是我在Look and Feel,Advanced:
中使用的代码Qualtrics.SurveyEngine.addOnload(function()
{
qtrix.addAutoComplete("#QR\\~QID6", [
"Item 1",
"Item 2",
"Item 3",
"Item 3000"
]);
});
这是问题的javascript框中的代码:
private ObservableCollection<Inline> _inlineList;
public ObservableCollection<Inline> InlineList
{
get { return _inlineList; }
set { Set(() => InlineList, ref _inlineList, value); }
}
private void SendClicked()
{
InlineList.Add(new Run("This is some bold text") { FontWeight = FontWeights.Bold });
InlineList.Add(new Run("Some more text"));
InlineList.Add(new Run("This is some text") { TextDecorations = TextDecorations.Underline });
}
public class BindableTextBlock : TextBlock
{
public ObservableCollection<Inline> InlineList
{
get { return (ObservableCollection<Inline>)GetValue(InlineListProperty); }
set { SetValue(InlineListProperty, value); }
}
public static readonly DependencyProperty InlineListProperty =
DependencyProperty.Register("InlineList", typeof(ObservableCollection<Inline>), typeof(BindableTextBlock), new UIPropertyMetadata(null, OnPropertyChanged));
private static void OnPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue == null) return;
var textBlock = (BindableTextBlock)sender;
textBlock.Inlines.AddRange((ObservableCollection<Inline>)e.NewValue);
}
}
<testRobot:BindableTextBlock
Width="Auto" Height="Auto"
InlineList="{Binding InlineList}" >
</testRobot:BindableTextBlock>
我不熟悉Javascript,而且对Qualtrics中的这种自定义水平还不熟悉。我将不胜感激任何指导或领导。谢谢!